]> jfr.im git - yt-dlp.git/blobdiff - devscripts/lazy_load_template.py
[cleanup] Add more ruff rules (#10149)
[yt-dlp.git] / devscripts / lazy_load_template.py
index a6e26b6f63c33a1c044eb90bedb1cab872c5f1b1..6f52165c5c551fe58d37d63696eb7c9660d588c2 100644 (file)
@@ -6,19 +6,23 @@
     age_restricted,
     bug_reports_message,
     classproperty,
+    variadic,
     write_string,
 )
 
 # These bloat the lazy_extractors, so allow them to passthrough silently
-ALLOWED_CLASSMETHODS = {'get_testcases', 'extract_from_webpage'}
+ALLOWED_CLASSMETHODS = {'extract_from_webpage', 'get_testcases', 'get_webpage_testcases'}
+_WARNED = False
 
 
 class LazyLoadMetaClass(type):
     def __getattr__(cls, name):
-        if '_real_class' not in cls.__dict__ and name not in ALLOWED_CLASSMETHODS:
-            write_string(
-                'WARNING: Falling back to normal extractor since lazy extractor '
-                f'{cls.__name__} does not have attribute {name}{bug_reports_message()}\n')
+        global _WARNED
+        if ('_real_class' not in cls.__dict__
+                and name not in ALLOWED_CLASSMETHODS and not _WARNED):
+            _WARNED = True
+            write_string('WARNING: Falling back to normal extractor since lazy extractor '
+                         f'{cls.__name__} does not have attribute {name}{bug_reports_message()}\n')
         return getattr(cls.real_class, name)