Repository: yt-dlp/yt-dlp (branch: elemental_tv_to_upstream)
Commit date: 2024-01-14T13:00:44Z

Workflow file: .github/workflows/quick-test.yml (Quick Test)
name: Quick Test
on: [push, pull_request]
permissions:
  contents: read

jobs:
  tests:
    name: Core Test
    if: "!contains(github.event.head_commit.message, 'ci skip all')"
    runs-on: ubuntu-latest
    services:
      pypi_wayback:
        image: ghcr.io/waleko/pypi-wayback
        ports:
          - 8629:8080
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python 3.8
      uses: actions/setup-python@v4
      with:
        python-version: '3.8'
    - name: Install test requirements
      run: pip install pytest -r requirements.txt
    - name: Run tests
      run: |
        python3 -m yt_dlp -v || true
        python3 ./devscripts/run_tests.py core
  flake8:
    name: Linter
    if: "!contains(github.event.head_commit.message, 'ci skip all')"
    runs-on: ubuntu-latest
    services:
      pypi_wayback:
        image: ghcr.io/waleko/pypi-wayback
        ports:
          - 8629:8080
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v4
    - name: Install flake8
      run: pip install flake8
    - name: Make lazy extractors
      run: python devscripts/make_lazy_extractors.py
    - name: Run flake8
      run: flake8 .

env:
  PIP_INDEX_URL: http://localhost:8629/2024-01-14
  UV_INDEX_URL: http://localhost:8629/2024-01-14


Failed build logs:
step_name: Linter/5_Make lazy extractors.txt
log: ##[group]Run python devscripts/make_lazy_extractors.py
[36;1mpython devscripts/make_lazy_extractors.py[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
Traceback (most recent call last):
  File "/home/runner/work/yt-dlp/yt-dlp/devscripts/make_lazy_extractors.py", line 132, in <module>
    main()
  File "/home/runner/work/yt-dlp/yt-dlp/devscripts/make_lazy_extractors.py", line 41, in main
    _ALL_CLASSES = get_all_ies()  # Must be before import
  File "/home/runner/work/yt-dlp/yt-dlp/devscripts/make_lazy_extractors.py", line 68, in get_all_ies
    from yt_dlp.extractor.extractors import _ALL_CLASSES
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/extractor/extractors.py", line 17, in <module>
    from ._extractors import *  # noqa: F403
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/extractor/_extractors.py", line 544, in <module>
    from .elevensports import ElevenSportsIE
ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'
##[error]Process completed with exit code 1.

step_name: Core Test/5_Run tests.txt
log: ##[group]Run python3 -m yt_dlp -v || true
[36;1mpython3 -m yt_dlp -v || true[0m
[36;1mpython3 ./devscripts/run_tests.py core[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.8.18/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib
##[endgroup]
[debug] Command-line config: ['-v']
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/__main__.py", line 17, in <module>
    yt_dlp.main()
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/__init__.py", line 1009, in main
    _exit(*variadic(_real_main(argv)))
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/__init__.py", line 963, in _real_main
    with YoutubeDL(ydl_opts) as ydl:
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/YoutubeDL.py", line 690, in __init__
    self.print_debug_header()
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/YoutubeDL.py", line 3920, in print_debug_header
    from .extractor.extractors import _LAZY_LOADER
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/extractor/extractors.py", line 17, in <module>
    from ._extractors import *  # noqa: F403
  File "/home/runner/work/yt-dlp/yt-dlp/yt_dlp/extractor/_extractors.py", line 544, in <module>
    from .elevensports import ElevenSportsIE
ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'
Running ['pytest', '-Werror', '--tb=short', '--color=yes', '-m', 'not download']
[1m============================= test session starts ==============================[0m
platform linux -- Python 3.8.18, pytest-7.4.4, pluggy-1.3.0 -- /opt/hostedtoolcache/Python/3.8.18/x64/bin/python
cachedir: .pytest_cache
rootdir: /home/runner/work/yt-dlp/yt-dlp
configfile: setup.cfg
[1mcollecting ... [0mcollected 653 items / 9 errors / 6 deselected / 647 selected

==================================== ERRORS ====================================
[31m[1m_________________ ERROR collecting test/test_InfoExtractor.py __________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_InfoExtractor.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_InfoExtractor.py:16: in <module>
    from yt_dlp.extractor import YoutubeIE, get_info_extractor
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m___________________ ERROR collecting test/test_YoutubeDL.py ____________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_YoutubeDL.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_YoutubeDL.py:17: in <module>
    from yt_dlp.extractor import YoutubeIE
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m____________________ ERROR collecting test/test_all_urls.py ____________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_all_urls.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_all_urls.py:14: in <module>
    from yt_dlp.extractor import FacebookIE, YoutubeIE, gen_extractors
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m____________________ ERROR collecting test/test_download.py ____________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_download.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_download.py:286: in <module>
    inject_tests(normal_test_cases)
test/test_download.py:275: in inject_tests
    for test_case in test_cases:
test/helper.py:91: in gettestcases
    for ie in yt_dlp.extractor.gen_extractors():
yt_dlp/extractor/__init__.py:20: in gen_extractors
    return [klass() for klass in gen_extractor_classes()]
yt_dlp/extractor/__init__.py:11: in gen_extractor_classes
    from .extractors import _ALL_CLASSES
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m_____________ ERROR collecting test/test_iqiyi_sdk_interpreter.py ______________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_iqiyi_sdk_interpreter.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_iqiyi_sdk_interpreter.py:12: in <module>
    from yt_dlp.extractor import IqiyiIE
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m___________________ ERROR collecting test/test_subtitles.py ____________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_subtitles.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_subtitles.py:12: in <module>
    from yt_dlp.extractor import (
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m_________________ ERROR collecting test/test_youtube_lists.py __________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_youtube_lists.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_youtube_lists.py:12: in <module>
    from yt_dlp.extractor import YoutubeIE, YoutubeTabIE
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m__________________ ERROR collecting test/test_youtube_misc.py __________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_youtube_misc.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_youtube_misc.py:11: in <module>
    from yt_dlp.extractor import YoutubeIE
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[31m[1m_______________ ERROR collecting test/test_youtube_signature.py ________________[0m
[31mImportError while importing test module '/home/runner/work/yt-dlp/yt-dlp/test/test_youtube_signature.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_youtube_signature.py:17: in <module>
    from yt_dlp.extractor import YoutubeIE
yt_dlp/compat/compat_utils.py:36: in __getattribute__
    ret = super().__getattribute__(attr)
yt_dlp/compat/compat_utils.py:54: in __getattr__
    ret = from_child(attr)
yt_dlp/compat/compat_utils.py:68: in from_child
    child = importlib.import_module(child, parent.__name__)
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
yt_dlp/extractor/extractors.py:17: in <module>
    from ._extractors import *  # noqa: F403
yt_dlp/extractor/_extractors.py:544: in <module>
    from .elevensports import ElevenSportsIE
E   ModuleNotFoundError: No module named 'yt_dlp.extractor.elevensports'[0m
[36m[1m=========================== short test summary info ============================[0m
[31mERROR[0m test/test_InfoExtractor.py
[31mERROR[0m test/test_YoutubeDL.py
[31mERROR[0m test/test_all_urls.py
[31mERROR[0m test/test_download.py
[31mERROR[0m test/test_iqiyi_sdk_interpreter.py
[31mERROR[0m test/test_subtitles.py
[31mERROR[0m test/test_youtube_lists.py
[31mERROR[0m test/test_youtube_misc.py
[31mERROR[0m test/test_youtube_signature.py
!!!!!!!!!!!!!!!!!!! Interrupted: 9 errors during collection !!!!!!!!!!!!!!!!!!!!
[31m======================= [33m6 deselected[0m, [31m[1m9 errors[0m[31m in 1.17s[0m[31m ========================[0m
##[error]Process completed with exit code 2.


Changed files:
yt_dlp/extractor/_extractors.py

Fix diff:
diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py
index e5c6b219e..0667a5255 100644
--- a/yt_dlp/extractor/_extractors.py
+++ b/yt_dlp/extractor/_extractors.py
@@ -541,12 +541,6 @@
 from .einthusan import EinthusanIE
 from .eitb import EitbIE
 from .elemental_tv import ElementalTVIE
-from .elevensports import ElevenSportsIE
-from .ellentube import (
-    EllenTubeIE,
-    EllenTubeVideoIE,
-    EllenTubePlaylistIE,
-)
 from .elonet import ElonetIE
 from .elpais import ElPaisIE
 from .eltrecetv import ElTreceTVIE