diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e20373ec02..bdec4d1c9d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -194,7 +194,7 @@ jobs: UPDATE_TO: yt-dlp/yt-dlp@2025.09.05 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 # Needed for changelog @@ -255,7 +255,7 @@ jobs: SKIP_ONEFILE_BUILD: ${{ (!matrix.onefile && '1') || '' }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Cache requirements if: matrix.cache_requirements @@ -318,7 +318,7 @@ jobs: UPDATE_TO: yt-dlp/yt-dlp@2025.09.05 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 # NB: Building universal2 does not work with python from actions/setup-python - name: Cache requirements @@ -448,7 +448,7 @@ jobs: PYI_WHEEL: pyinstaller-${{ matrix.pyi_version }}-py3-none-${{ matrix.platform_tag }}.whl steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python_version }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 910c409efc..6d4dbdf193 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index d76495a25d..d196f59d83 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -53,7 +53,7 @@ jobs: - os: windows-latest python-version: pypy-3.11 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: diff --git a/.github/workflows/download.yml b/.github/workflows/download.yml index e5debc786d..8163bd1a23 100644 --- a/.github/workflows/download.yml +++ b/.github/workflows/download.yml @@ -9,7 +9,7 @@ jobs: if: "contains(github.event.head_commit.message, 'ci run dl')" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python uses: actions/setup-python@v6 with: @@ -36,7 +36,7 @@ jobs: - os: windows-latest python-version: pypy-3.11 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: diff --git a/.github/workflows/quick-test.yml b/.github/workflows/quick-test.yml index 307559b96c..c26628b421 100644 --- a/.github/workflows/quick-test.yml +++ b/.github/workflows/quick-test.yml @@ -9,7 +9,7 @@ jobs: if: "!contains(github.event.head_commit.message, 'ci skip all')" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python 3.10 uses: actions/setup-python@v6 with: @@ -26,7 +26,7 @@ jobs: if: "!contains(github.event.head_commit.message, 'ci skip all')" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-python@v6 with: python-version: '3.10' diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 13cce8c33f..fd7cf4cbae 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -12,7 +12,7 @@ jobs: outputs: commit: ${{ steps.check_for_new_commits.outputs.commit }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Check for new commits diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 52c61808fc..6bb429f269 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -75,7 +75,7 @@ jobs: head_sha: ${{ steps.get_target.outputs.head_sha }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 @@ -170,7 +170,7 @@ jobs: id-token: write # mandatory for trusted publishing steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-python@v6 @@ -233,7 +233,7 @@ jobs: VERSION: ${{ needs.prepare.outputs.version }} HEAD_SHA: ${{ needs.prepare.outputs.head_sha }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/download-artifact@v4 diff --git a/.github/workflows/signature-tests.yml b/.github/workflows/signature-tests.yml index 8d48dff669..77f5e6a4c8 100644 --- a/.github/workflows/signature-tests.yml +++ b/.github/workflows/signature-tests.yml @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, windows-latest] python-version: ['3.10', '3.11', '3.12', '3.13', '3.14', pypy-3.11] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: diff --git a/.github/workflows/test-workflows.yml b/.github/workflows/test-workflows.yml index 684ec6cc44..6c993e6b34 100644 --- a/.github/workflows/test-workflows.yml +++ b/.github/workflows/test-workflows.yml @@ -26,7 +26,7 @@ jobs: name: Check workflows runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-python@v6 with: python-version: "3.10" # Keep this in sync with release.yml's prepare job diff --git a/devscripts/changelog_override.json b/devscripts/changelog_override.json index 618e7fe6fe..bd78058e1e 100644 --- a/devscripts/changelog_override.json +++ b/devscripts/changelog_override.json @@ -298,5 +298,10 @@ "action": "add", "when": "08d78996831bd8e1e3c2592d740c3def00bbf548", "short": "[priority] **Several options have been deprecated**\nIn order to simplify the codebase and reduce maintenance burden, various options have been deprecated. Please remove them from your commands/configurations. [Read more](https://github.com/yt-dlp/yt-dlp/issues/14198)" + }, + { + "action": "add", + "when": "4e6a693057cfaf1ce1f07b019ed3bfce2bf936f6", + "short": "[priority] **The minimum *required* Python version has been raised to 3.10**\nPython 3.9 has reached its end-of-life as of October 2025, and yt-dlp has now removed support for it. [Read more](https://github.com/yt-dlp/yt-dlp/issues/13858)" } ] diff --git a/pyproject.toml b/pyproject.toml index 36a579fddb..0dabe2ea14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,7 +75,7 @@ dev = [ ] static-analysis = [ "autopep8~=2.0", - "ruff~=0.13.0", + "ruff~=0.14.0", ] test = [ "pytest~=8.1", diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 2e36319dd8..ef42ba68e3 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -4112,7 +4112,7 @@ def cookiejar(self): self.params.get('cookiefile'), self.params.get('cookiesfrombrowser'), self) except CookieLoadError as error: cause = error.__context__ - self.report_error(str(cause), tb=''.join(traceback.format_exception(None, cause, cause.__traceback__))) + self.report_error(str(cause), tb=''.join(traceback.format_exception(cause))) raise @property diff --git a/yt_dlp/utils/_utils.py b/yt_dlp/utils/_utils.py index e5268deff9..2779d3043d 100644 --- a/yt_dlp/utils/_utils.py +++ b/yt_dlp/utils/_utils.py @@ -2402,6 +2402,7 @@ class PlaylistEntries: def __init__(self, ydl, info_dict): self.ydl = ydl + # _entries must be assigned now since infodict can change during iteration entries = info_dict.get('entries') if entries is None: