Browse Source

[compat] Let PyInstaller detect _legacy module

pukkandan 2 years ago
parent
commit
f5e438a976
3 changed files with 8 additions and 14 deletions
  1. 0 3
      pyinst.py
  2. 0 3
      yt_dlp/YoutubeDL.py
  3. 8 8
      yt_dlp/compat/__init__.py

+ 0 - 3
pyinst.py

@@ -33,9 +33,6 @@ def main():
         '--icon=devscripts/logo.ico',
         '--upx-exclude=vcruntime140.dll',
         '--noconfirm',
-        # NB: Modules that are only imported dynamically must be added here.
-        # --collect-submodules may not work correctly if user has a yt-dlp installed via PIP
-        '--hidden-import=yt_dlp.compat._legacy',
         *dependency_options(),
         *opts,
         'yt_dlp/__main__.py',

+ 0 - 3
yt_dlp/YoutubeDL.py

@@ -24,7 +24,6 @@ import urllib.request
 from string import ascii_letters
 
 from .cache import Cache
-from .compat import HAS_LEGACY as compat_has_legacy
 from .compat import compat_os_name, compat_shlex_quote
 from .cookies import load_cookies
 from .downloader import FFmpegFD, get_suitable_downloader, shorten_protocol_name
@@ -623,8 +622,6 @@ class YoutubeDL:
             self.deprecation_warning(msg)
 
         self.params['compat_opts'] = set(self.params.get('compat_opts', ()))
-        if not compat_has_legacy:
-            self.params['compat_opts'].add('no-compat-legacy')
         if 'list-formats' in self.params['compat_opts']:
             self.params['listformats_table'] = False
 

+ 8 - 8
yt_dlp/compat/__init__.py

@@ -8,14 +8,8 @@ from ._deprecated import *  # noqa: F401, F403
 from .compat_utils import passthrough_module
 
 # XXX: Implement this the same way as other DeprecationWarnings without circular import
-try:
-    passthrough_module(__name__, '._legacy', callback=lambda attr: warnings.warn(
-        DeprecationWarning(f'{__name__}.{attr} is deprecated'), stacklevel=2))
-    HAS_LEGACY = True
-except ModuleNotFoundError:
-    # Keep working even without _legacy module
-    HAS_LEGACY = False
-del passthrough_module
+passthrough_module(__name__, '._legacy', callback=lambda attr: warnings.warn(
+    DeprecationWarning(f'{__name__}.{attr} is deprecated'), stacklevel=2))
 
 
 # HTMLParseError has been deprecated in Python 3.3 and removed in
@@ -76,3 +70,9 @@ if compat_os_name in ('nt', 'ce'):
         return userhome + path[i:]
 else:
     compat_expanduser = os.path.expanduser
+
+
+# NB: Add modules that are imported dynamically here so that PyInstaller can find them
+# See https://github.com/pyinstaller/pyinstaller-hooks-contrib/issues/438
+if False:
+    from . import _legacy  # noqa: F401