50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
__author__ = "Karim Shoair (karim.shoair@pm.me)"
|
|
__version__ = "0.2.99"
|
|
__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"]
|