]>
jfr.im git - yt-dlp.git/blob - devscripts/lazy_load_template.py
6d9b2774293e2bbbd990995787339742ccbe315b
5 from ..utils
import bug_reports_message
, classproperty
, write_string
8 class LazyLoadMetaClass(type):
9 def __getattr__(cls
, name
):
10 # "is_suitable" requires "_TESTS". However, they bloat the lazy_extractors
11 if '_real_class' not in cls
.__dict
__ and name
not in ('is_suitable', 'get_testcases'):
13 'WARNING: Falling back to normal extractor since lazy extractor '
14 f
'{cls.__name__} does not have attribute {name}{bug_reports_message()}\n')
15 return getattr(cls
.real_class
, name
)
18 class LazyLoadExtractor(metaclass
=LazyLoadMetaClass
):
21 if '_real_class' not in cls
.__dict
__:
22 cls
._real
_class
= getattr(importlib
.import_module(cls
._module
), cls
.__name
__)
23 return cls
._real
_class
25 def __new__(cls
, *args
, **kwargs
):
26 instance
= cls
.real_class
.__new
__(cls
.real_class
)
27 instance
.__init
__(*args
, **kwargs
)