From f5e438a976dcf8d7d263631ea0b0bf114b6182af Mon Sep 17 00:00:00 2001 From: pukkandan Date: Sun, 17 Jul 2022 18:45:43 +0530 Subject: [PATCH] [compat] Let PyInstaller detect _legacy module --- pyinst.py | 3 --- yt_dlp/YoutubeDL.py | 3 --- yt_dlp/compat/__init__.py | 16 ++++++++-------- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/pyinst.py b/pyinst.py index 526e8802f6..31854e881c 100644 --- a/pyinst.py +++ b/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', diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index ffc5ff8c06..0f8a51dbe3 100644 --- a/yt_dlp/YoutubeDL.py +++ b/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 diff --git a/yt_dlp/compat/__init__.py b/yt_dlp/compat/__init__.py index 9f8e8c3e53..df1d4e671a 100644 --- a/yt_dlp/compat/__init__.py +++ b/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