Files
Scrapling/scrapling/__init__.py
T
2025-04-22 05:17:08 +02:00

50 lines
1.5 KiB
Python

__author__ = "Karim Shoair (karim.shoair@pm.me)"
__version__ = "0.3-beta"
__copyright__ = "Copyright (c) 2024 Karim Shoair"
# A lightweight approach to create lazy loader for each import for backward compatibility
# This will reduces initial memory footprint significantly (only loads what's used)
def __getattr__(name):
if name == "Fetcher":
from scrapling.fetchers import Fetcher as cls
return cls
elif name == "Adaptor":
from scrapling.parser import Adaptor as cls
return cls
elif name == "Adaptors":
from scrapling.parser import Adaptors as cls
return cls
elif name == "AttributesHandler":
from scrapling.core.custom_types import AttributesHandler as cls
return cls
elif name == "TextHandler":
from scrapling.core.custom_types import TextHandler as cls
return cls
elif name == "AsyncFetcher":
from scrapling.fetchers import AsyncFetcher as cls
return cls
elif name == "StealthyFetcher":
from scrapling.fetchers import StealthyFetcher as cls
return cls
elif name == "PlayWrightFetcher":
from scrapling.fetchers import PlayWrightFetcher as cls
return cls
elif name == "CustomFetcher":
from scrapling.fetchers import CustomFetcher as cls
return cls
else:
raise AttributeError(f"module 'scrapling' has no attribute '{name}'")
__all__ = ["Adaptor", "Fetcher", "AsyncFetcher", "StealthyFetcher", "PlayWrightFetcher"]