]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/compat/compat_utils.py
[ie/podbayfm] Fix extraction (#10195)
[yt-dlp.git] / yt_dlp / compat / compat_utils.py
index f8679c98ecf7b10467d9564029e9d2cbfa775c0e..d62b7d0488dc9510cd9c5ffb1a5d3f8d2f834c72 100644 (file)
@@ -15,7 +15,7 @@ def get_package_info(module):
         name=getattr(module, '_yt_dlp__identifier', module.__name__),
         version=str(next(filter(None, (
             getattr(module, attr, None)
-            for attr in ('__version__', 'version_string', 'version')
+            for attr in ('_yt_dlp__version', '__version__', 'version_string', 'version')
         )), None)))
 
 
@@ -28,20 +28,6 @@ def _is_dunder(name):
 
 
 class EnhancedModule(types.ModuleType):
-    def __new__(cls, name, *args, **kwargs):
-        if name not in sys.modules:
-            return super().__new__(cls, name, *args, **kwargs)
-
-        assert not args and not kwargs, 'Cannot pass additional arguments to an existing module'
-        module = sys.modules[name]
-        module.__class__ = cls
-        return module
-
-    def __init__(self, name, *args, **kwargs):
-        # Prevent __new__ from trigerring __init__ again
-        if name not in sys.modules:
-            super().__init__(name, *args, **kwargs)
-
     def __bool__(self):
         return vars(self).get('__bool__', lambda: True)()
 
@@ -60,11 +46,9 @@ def __getattribute__(self, attr):
 
 def passthrough_module(parent, child, allowed_attributes=(..., ), *, callback=lambda _: None):
     """Passthrough parent module into a child module, creating the parent if necessary"""
-    parent = EnhancedModule(parent)
-
     def __getattr__(attr):
         if _is_package(parent):
-            with contextlib.suppress(ImportError):
+            with contextlib.suppress(ModuleNotFoundError):
                 return importlib.import_module(f'.{attr}', parent.__name__)
 
         ret = from_child(attr)
@@ -93,5 +77,7 @@ def from_child(attr):
 
         return _NO_ATTRIBUTE
 
+    parent = sys.modules.get(parent, types.ModuleType(parent))
+    parent.__class__ = EnhancedModule
     parent.__getattr__ = __getattr__
     return parent