Skip to content

Commit

Permalink
[compat] Ensure submodules are imported correctly
Browse files Browse the repository at this point in the history
Closes #7663
  • Loading branch information
pukkandan committed Jul 22, 2023
1 parent 25b6e8f commit a250b24
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 12 deletions.
6 changes: 3 additions & 3 deletions test/test_compat.py
Expand Up @@ -9,15 +9,16 @@


import struct
import urllib.parse

from yt_dlp import compat
from yt_dlp.compat import urllib # isort: split
from yt_dlp.compat import (
compat_etree_fromstring,
compat_expanduser,
compat_urllib_parse_unquote,
compat_urllib_parse_urlencode,
)
from yt_dlp.compat.urllib.request import getproxies


class TestCompat(unittest.TestCase):
Expand All @@ -28,8 +29,7 @@ def test_compat_passthrough(self):
with self.assertWarns(DeprecationWarning):
compat.WINDOWS_VT_MODE

# TODO: Test submodule
# compat.asyncio.events # Must not raise error
self.assertEqual(urllib.request.getproxies, getproxies)

with self.assertWarns(DeprecationWarning):
compat.compat_pycrypto_AES # Must not raise error
Expand Down
7 changes: 2 additions & 5 deletions yt_dlp/compat/__init__.py
@@ -1,14 +1,11 @@
import os
import sys
import warnings
import xml.etree.ElementTree as etree

from ._deprecated import * # noqa: F401, F403
from .compat_utils import passthrough_module

# XXX: Implement this the same way as other DeprecationWarnings without circular import
passthrough_module(__name__, '._legacy', callback=lambda attr: warnings.warn(
DeprecationWarning(f'{__name__}.{attr} is deprecated'), stacklevel=5))
passthrough_module(__name__, '._deprecated')
del passthrough_module


# HTMLParseError has been deprecated in Python 3.3 and removed in
Expand Down
8 changes: 8 additions & 0 deletions yt_dlp/compat/_deprecated.py
@@ -1,4 +1,12 @@
"""Deprecated - New code should avoid these"""
import warnings

from .compat_utils import passthrough_module

# XXX: Implement this the same way as other DeprecationWarnings without circular import
passthrough_module(__name__, '.._legacy', callback=lambda attr: warnings.warn(
DeprecationWarning(f'{__name__}.{attr} is deprecated'), stacklevel=6))
del passthrough_module

import base64
import urllib.error
Expand Down
3 changes: 3 additions & 0 deletions yt_dlp/compat/urllib/__init__.py
@@ -1,6 +1,9 @@
# flake8: noqa: F405
from urllib import * # noqa: F403

del request
from . import request # noqa: F401

from ..compat_utils import passthrough_module

passthrough_module(__name__, 'urllib')
Expand Down
6 changes: 2 additions & 4 deletions yt_dlp/utils/__init__.py
@@ -1,6 +1,4 @@
# flake8: noqa: F401, F403
import warnings

# flake8: noqa: F403
from ..compat.compat_utils import passthrough_module

passthrough_module(__name__, '._deprecated')
Expand All @@ -9,4 +7,4 @@
# isort: off
from .traversal import *
from ._utils import *
from ._utils import _configuration_args, _get_exe_version_output
from ._utils import _configuration_args, _get_exe_version_output # noqa: F401

0 comments on commit a250b24

Please sign in to comment.