updating and refactoring codebase for improved performance and maintainability
This commit is contained in:
+32
-9
@@ -4,16 +4,39 @@ This package contains wrappers around external tools (e.g. yt-dlp) so cmdlets ca
|
||||
common defaults (cookies, timeouts, format selectors) and users can override them via
|
||||
`config.conf`.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from .ytdlp import YtDlpTool, YtDlpDefaults
|
||||
from .playwright import PlaywrightTool, PlaywrightDefaults
|
||||
from .florencevision import FlorenceVisionTool, FlorenceVisionDefaults
|
||||
# Lazy-loaded to avoid pulling in yt_dlp, playwright, and their heavy transitive
|
||||
# dependencies (~1–2 s) at package import time. Each submodule is loaded only when
|
||||
# a name from it is first accessed through this package namespace.
|
||||
|
||||
__all__ = [
|
||||
"YtDlpTool",
|
||||
"YtDlpDefaults",
|
||||
"PlaywrightTool",
|
||||
"PlaywrightDefaults",
|
||||
"FlorenceVisionTool",
|
||||
"FlorenceVisionDefaults",
|
||||
"YtDlpTool",
|
||||
"YtDlpDefaults",
|
||||
"PlaywrightTool",
|
||||
"PlaywrightDefaults",
|
||||
"FlorenceVisionTool",
|
||||
"FlorenceVisionDefaults",
|
||||
]
|
||||
|
||||
_MODULE_ATTRS = {
|
||||
"YtDlpTool": ".ytdlp",
|
||||
"YtDlpDefaults": ".ytdlp",
|
||||
"PlaywrightTool": ".playwright",
|
||||
"PlaywrightDefaults": ".playwright",
|
||||
"FlorenceVisionTool": ".florencevision",
|
||||
"FlorenceVisionDefaults": ".florencevision",
|
||||
}
|
||||
|
||||
|
||||
def __getattr__(name: str) -> object:
|
||||
submod = _MODULE_ATTRS.get(name)
|
||||
if submod is None:
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
from importlib import import_module
|
||||
mod = import_module(submod, package=__name__)
|
||||
obj = getattr(mod, name)
|
||||
# Cache on this module so subsequent accesses bypass __getattr__.
|
||||
globals()[name] = obj
|
||||
return obj
|
||||
|
||||
|
||||
Reference in New Issue
Block a user