From 32f1671a906bf375e5b5d39433dd13f917a8dfa7 Mon Sep 17 00:00:00 2001 From: bashonly <88596187+bashonly@users.noreply.github.com> Date: Sat, 16 May 2026 15:30:45 -0500 Subject: [PATCH] [build] Rename requirements files to clean up dependency graph (#16740) Authored by: bashonly --- .github/workflows/build.yml | 14 +++++++------- .github/workflows/challenge-tests.yml | 6 +++--- .github/workflows/core.yml | 12 ++++++------ .github/workflows/quick-test.yml | 8 ++++---- .github/workflows/release.yml | 4 ++-- .github/workflows/test-workflows.yml | 6 +++--- bundle/docker/linux/build.sh | 4 ++-- .../{requirements-build.txt => build.txt} | 0 .../{requirements-curl-cffi.txt => curl-cffi.txt} | 0 .../{requirements-default.txt => default.txt} | 0 .../{requirements-delocate.txt => delocate.txt} | 0 .../requirements/{requirements-dev.txt => dev.txt} | 0 .../{requirements-linux.txt => linux.txt} | 0 ...nts-macos-curl_cffi.txt => macos-curl_cffi.txt} | 0 .../{requirements-macos.txt => macos.txt} | 0 .../requirements/{requirements-pip.txt => pip.txt} | 0 .../{requirements-pyflakes.txt => pyflakes.txt} | 0 ...equirements-pyinstaller.txt => pyinstaller.txt} | 0 ...nts-static-analysis.txt => static-analysis.txt} | 0 .../{requirements-test.txt => test.txt} | 0 .../requirements/{requirements-uv.txt => uv.txt} | 0 ...4-pyinstaller.txt => win-arm64-pyinstaller.txt} | 0 ...x64-pyinstaller.txt => win-x64-pyinstaller.txt} | 0 ...x86-pyinstaller.txt => win-x86-pyinstaller.txt} | 0 devscripts/update_requirements.py | 11 ++++++----- 25 files changed, 33 insertions(+), 32 deletions(-) rename bundle/requirements/{requirements-build.txt => build.txt} (100%) rename bundle/requirements/{requirements-curl-cffi.txt => curl-cffi.txt} (100%) rename bundle/requirements/{requirements-default.txt => default.txt} (100%) rename bundle/requirements/{requirements-delocate.txt => delocate.txt} (100%) rename bundle/requirements/{requirements-dev.txt => dev.txt} (100%) rename bundle/requirements/{requirements-linux.txt => linux.txt} (100%) rename bundle/requirements/{requirements-macos-curl_cffi.txt => macos-curl_cffi.txt} (100%) rename bundle/requirements/{requirements-macos.txt => macos.txt} (100%) rename bundle/requirements/{requirements-pip.txt => pip.txt} (100%) rename bundle/requirements/{requirements-pyflakes.txt => pyflakes.txt} (100%) rename bundle/requirements/{requirements-pyinstaller.txt => pyinstaller.txt} (100%) rename bundle/requirements/{requirements-static-analysis.txt => static-analysis.txt} (100%) rename bundle/requirements/{requirements-test.txt => test.txt} (100%) rename bundle/requirements/{requirements-uv.txt => uv.txt} (100%) rename bundle/requirements/{requirements-win-arm64-pyinstaller.txt => win-arm64-pyinstaller.txt} (100%) rename bundle/requirements/{requirements-win-x64-pyinstaller.txt => win-x64-pyinstaller.txt} (100%) rename bundle/requirements/{requirements-win-x86-pyinstaller.txt => win-x86-pyinstaller.txt} (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ecb3354337..a45a4b4e15 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -325,7 +325,7 @@ jobs: brew uninstall --ignore-dependencies python3 python3 -m venv ~/yt-dlp-build-venv source ~/yt-dlp-build-venv/bin/activate - python3 -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" + python3 -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" rm -rf build # Only directly install wheels for "macosx_10_15_universal2" and "any" platforms mkdir -p build/wheels @@ -335,7 +335,7 @@ jobs: --platform=any \ -d build/wheels \ --require-hashes \ - -r "bundle/requirements/requirements-macos.txt" + -r "bundle/requirements/macos.txt" python3 -m pip install --force-reinstall --no-deps -U build/wheels/*.whl rm -rf build/wheels/* # We need to fuse our own universal2 wheels for curl_cffi and cffi @@ -347,7 +347,7 @@ jobs: --platform "${platform}" \ -d build/wheels \ --require-hashes \ - -r "bundle/requirements/requirements-macos-curl_cffi.txt" + -r "bundle/requirements/macos-curl_cffi.txt" done python3 -m delocate.cmd.delocate_merge build/wheels/curl_cffi-*.whl -w build/universal2 python3 -m delocate.cmd.delocate_merge build/wheels/cffi-*.whl -w build/universal2 @@ -456,12 +456,12 @@ jobs: $PSNativeCommandUseErrorActionPreference = $true python -m venv /yt-dlp-build-venv /yt-dlp-build-venv/Scripts/Activate.ps1 - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-win-${Env:ARCH}-pyinstaller.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/win-${Env:ARCH}-pyinstaller.txt" if (${Env:ARCH} -eq "x86") { - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-default.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/default.txt" } else { - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-curl-cffi.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/curl-cffi.txt" } - name: Prepare diff --git a/.github/workflows/challenge-tests.yml b/.github/workflows/challenge-tests.yml index b58b82cb32..287a115bd1 100644 --- a/.github/workflows/challenge-tests.yml +++ b/.github/workflows/challenge-tests.yml @@ -79,9 +79,9 @@ jobs: - name: Install test requirements shell: bash run: | - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-test.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-default.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/test.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/default.txt" - name: Run tests timeout-minutes: 15 shell: bash diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index ea212d8b45..256d187798 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -75,16 +75,16 @@ jobs: - name: Install test requirements (cpython) if: ${{ !startsWith(matrix.python-version, 'pypy') }} run: | - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-test.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-curl-cffi.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/test.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/curl-cffi.txt" - name: Install test requirements (PyPy) if: ${{ startsWith(matrix.python-version, 'pypy') }} run: | - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-test.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-default.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/test.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/default.txt" - name: Run tests timeout-minutes: 15 diff --git a/.github/workflows/quick-test.yml b/.github/workflows/quick-test.yml index 908c967f82..653971d8e7 100644 --- a/.github/workflows/quick-test.yml +++ b/.github/workflows/quick-test.yml @@ -31,8 +31,8 @@ jobs: - name: Install test requirements shell: bash run: | - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-test.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/test.txt" - name: Run tests timeout-minutes: 15 shell: bash @@ -56,8 +56,8 @@ jobs: python-version: '3.14' - name: Install dev dependencies run: | - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-static-analysis.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/static-analysis.txt" - name: Make lazy extractors run: python ./devscripts/make_lazy_extractors.py - name: Run ruff diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 84082cc032..9d926d9d34 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -185,8 +185,8 @@ jobs: - name: Install Requirements run: | sudo apt -y install pandoc man - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-build.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/build.txt" - name: Prepare env: diff --git a/.github/workflows/test-workflows.yml b/.github/workflows/test-workflows.yml index 248b5a16c0..ada6ffa240 100644 --- a/.github/workflows/test-workflows.yml +++ b/.github/workflows/test-workflows.yml @@ -36,9 +36,9 @@ jobs: - name: Install Python dependencies run: | - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pip.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pyflakes.txt" - python -m pip install -U --require-hashes -r "bundle/requirements/requirements-test.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pip.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/pyflakes.txt" + python -m pip install -U --require-hashes -r "bundle/requirements/test.txt" - name: Install requirements env: diff --git a/bundle/docker/linux/build.sh b/bundle/docker/linux/build.sh index 195ab89c8c..f576865cb8 100755 --- a/bundle/docker/linux/build.sh +++ b/bundle/docker/linux/build.sh @@ -14,8 +14,8 @@ export PYTHONPATH # shellcheck disable=SC1091 source .venv/bin/activate -python -m pip install -U --require-hashes -r "bundle/requirements/requirements-pyinstaller.txt" -python -m pip install -U --require-hashes -r "bundle/requirements/requirements-${REQUIREMENTS}.txt" +python -m pip install -U --require-hashes -r "bundle/requirements/pyinstaller.txt" +python -m pip install -U --require-hashes -r "bundle/requirements/${REQUIREMENTS}.txt" python -m devscripts.make_lazy_extractors python devscripts/update-version.py -c "${CHANNEL}" -r "${ORIGIN}" "${VERSION}" diff --git a/bundle/requirements/requirements-build.txt b/bundle/requirements/build.txt similarity index 100% rename from bundle/requirements/requirements-build.txt rename to bundle/requirements/build.txt diff --git a/bundle/requirements/requirements-curl-cffi.txt b/bundle/requirements/curl-cffi.txt similarity index 100% rename from bundle/requirements/requirements-curl-cffi.txt rename to bundle/requirements/curl-cffi.txt diff --git a/bundle/requirements/requirements-default.txt b/bundle/requirements/default.txt similarity index 100% rename from bundle/requirements/requirements-default.txt rename to bundle/requirements/default.txt diff --git a/bundle/requirements/requirements-delocate.txt b/bundle/requirements/delocate.txt similarity index 100% rename from bundle/requirements/requirements-delocate.txt rename to bundle/requirements/delocate.txt diff --git a/bundle/requirements/requirements-dev.txt b/bundle/requirements/dev.txt similarity index 100% rename from bundle/requirements/requirements-dev.txt rename to bundle/requirements/dev.txt diff --git a/bundle/requirements/requirements-linux.txt b/bundle/requirements/linux.txt similarity index 100% rename from bundle/requirements/requirements-linux.txt rename to bundle/requirements/linux.txt diff --git a/bundle/requirements/requirements-macos-curl_cffi.txt b/bundle/requirements/macos-curl_cffi.txt similarity index 100% rename from bundle/requirements/requirements-macos-curl_cffi.txt rename to bundle/requirements/macos-curl_cffi.txt diff --git a/bundle/requirements/requirements-macos.txt b/bundle/requirements/macos.txt similarity index 100% rename from bundle/requirements/requirements-macos.txt rename to bundle/requirements/macos.txt diff --git a/bundle/requirements/requirements-pip.txt b/bundle/requirements/pip.txt similarity index 100% rename from bundle/requirements/requirements-pip.txt rename to bundle/requirements/pip.txt diff --git a/bundle/requirements/requirements-pyflakes.txt b/bundle/requirements/pyflakes.txt similarity index 100% rename from bundle/requirements/requirements-pyflakes.txt rename to bundle/requirements/pyflakes.txt diff --git a/bundle/requirements/requirements-pyinstaller.txt b/bundle/requirements/pyinstaller.txt similarity index 100% rename from bundle/requirements/requirements-pyinstaller.txt rename to bundle/requirements/pyinstaller.txt diff --git a/bundle/requirements/requirements-static-analysis.txt b/bundle/requirements/static-analysis.txt similarity index 100% rename from bundle/requirements/requirements-static-analysis.txt rename to bundle/requirements/static-analysis.txt diff --git a/bundle/requirements/requirements-test.txt b/bundle/requirements/test.txt similarity index 100% rename from bundle/requirements/requirements-test.txt rename to bundle/requirements/test.txt diff --git a/bundle/requirements/requirements-uv.txt b/bundle/requirements/uv.txt similarity index 100% rename from bundle/requirements/requirements-uv.txt rename to bundle/requirements/uv.txt diff --git a/bundle/requirements/requirements-win-arm64-pyinstaller.txt b/bundle/requirements/win-arm64-pyinstaller.txt similarity index 100% rename from bundle/requirements/requirements-win-arm64-pyinstaller.txt rename to bundle/requirements/win-arm64-pyinstaller.txt diff --git a/bundle/requirements/requirements-win-x64-pyinstaller.txt b/bundle/requirements/win-x64-pyinstaller.txt similarity index 100% rename from bundle/requirements/requirements-win-x64-pyinstaller.txt rename to bundle/requirements/win-x64-pyinstaller.txt diff --git a/bundle/requirements/requirements-win-x86-pyinstaller.txt b/bundle/requirements/win-x86-pyinstaller.txt similarity index 100% rename from bundle/requirements/requirements-win-x86-pyinstaller.txt rename to bundle/requirements/win-x86-pyinstaller.txt diff --git a/devscripts/update_requirements.py b/devscripts/update_requirements.py index b1e430eb06..7231e8bdaf 100755 --- a/devscripts/update_requirements.py +++ b/devscripts/update_requirements.py @@ -34,7 +34,7 @@ PYPROJECT_PATH = BASE_PATH / 'pyproject.toml' MAKEFILE_PATH = BASE_PATH / 'Makefile' LOCKFILE_PATH = BASE_PATH / 'uv.lock' REQUIREMENTS_PATH = BASE_PATH / 'bundle/requirements' -REQS_OUTPUT_TMPL = 'requirements-{}.txt' +REQS_OUTPUT_TMPL = '{}.txt' EXTRAS_TABLE = 'project.optional-dependencies' GROUPS_TABLE = 'dependency-groups' @@ -544,11 +544,11 @@ def package_diff_dict( return ret_dict -def get_lock_packages(lock: dict[str, typing.Any]) -> dict[str, str]: +def get_lock_packages(lock: dict[str, typing.Any], ignore_names: list[str] | None = None) -> dict[str, str]: return { package['name']: package['version'] for package in lock['package'] - if package.get('version') + if package.get('version') and package['name'] not in (ignore_names or []) } @@ -578,6 +578,7 @@ def update_requirements( pyproject_text = PYPROJECT_PATH.read_text() pyproject_toml = parse_toml(pyproject_text) + package_name = pyproject_toml['project']['name'] extras = get_extras(pyproject_toml) # Remove pinned extras so they don't muck up the lockfile during generation/upgrade @@ -603,8 +604,8 @@ def update_requirements( run_process('uv', 'lock', upgrade_arg, env=env) # Record diff in uv.lock packages - old_packages = get_lock_packages(old_lock) if old_lock else {} - new_packages = get_lock_packages(parse_toml(LOCKFILE_PATH.read_text())) + old_packages = get_lock_packages(old_lock, [package_name]) if old_lock else {} + new_packages = get_lock_packages(parse_toml(LOCKFILE_PATH.read_text()), [package_name]) all_updates = package_diff_dict(old_packages, new_packages) # Update Windows PyInstaller requirements; need to compare before & after .txt's for reporting