aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/compat/compat_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/compat/compat_utils.py')
-rw-r--r--yt_dlp/compat/compat_utils.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/yt_dlp/compat/compat_utils.py b/yt_dlp/compat/compat_utils.py
index 938daf926..b1d58f5b9 100644
--- a/yt_dlp/compat/compat_utils.py
+++ b/yt_dlp/compat/compat_utils.py
@@ -1,9 +1,28 @@
+import collections
import contextlib
import importlib
import sys
import types
+_NO_ATTRIBUTE = object()
+
+_Package = collections.namedtuple('Package', ('name', 'version'))
+
+
+def get_package_info(module):
+ parent = module.__name__.split('.')[0]
+ parent_module = None
+ with contextlib.suppress(ImportError):
+ parent_module = importlib.import_module(parent)
+
+ for attr in ('__version__', 'version_string', 'version'):
+ version = getattr(parent_module, attr, None)
+ if version is not None:
+ break
+ return _Package(getattr(module, '_yt_dlp__identifier', parent), str(version))
+
+
def _is_package(module):
try:
module.__getattribute__('__path__')
@@ -12,9 +31,6 @@ def _is_package(module):
return True
-_NO_ATTRIBUTE = object()
-
-
def passthrough_module(parent, child, *, callback=lambda _: None):
parent_module = importlib.import_module(parent)
child_module = importlib.import_module(child, parent)