Spaces:
Sleeping
Sleeping
| from typing import TYPE_CHECKING | |
| # Type stubs for lazy imports | |
| if TYPE_CHECKING: | |
| from .profile import BrowserProfile, ProxySettings | |
| from .session import BrowserSession | |
| # Lazy imports mapping for heavy browser components | |
| _LAZY_IMPORTS = { | |
| 'ProxySettings': ('.profile', 'ProxySettings'), | |
| 'BrowserProfile': ('.profile', 'BrowserProfile'), | |
| 'BrowserSession': ('.session', 'BrowserSession'), | |
| } | |
| def __getattr__(name: str): | |
| """Lazy import mechanism for heavy browser components.""" | |
| if name in _LAZY_IMPORTS: | |
| module_path, attr_name = _LAZY_IMPORTS[name] | |
| try: | |
| from importlib import import_module | |
| # Use relative import for current package | |
| full_module_path = f'browser_use.browser{module_path}' | |
| module = import_module(full_module_path) | |
| attr = getattr(module, attr_name) | |
| # Cache the imported attribute in the module's globals | |
| globals()[name] = attr | |
| return attr | |
| except ImportError as e: | |
| raise ImportError(f'Failed to import {name} from {full_module_path}: {e}') from e | |
| raise AttributeError(f"module '{__name__}' has no attribute '{name}'") | |
| __all__ = [ | |
| 'BrowserSession', | |
| 'BrowserProfile', | |
| 'ProxySettings', | |
| ] | |