Skip to content

add Python 3.14 support and bump youtube-transcript-api for compatibility#2077

Open
shatovilya wants to merge 2 commits into
microsoft:mainfrom
shatovilya:update-python
Open

add Python 3.14 support and bump youtube-transcript-api for compatibility#2077
shatovilya wants to merge 2 commits into
microsoft:mainfrom
shatovilya:update-python

Conversation

@shatovilya

Copy link
Copy Markdown

Summary

According to the official Python release lifecycle, each feature release has a
limited bugfix window and then transitions to security-only support
(Python Developer Guide: Status of Python versions).
Python 3.13 is approaching that transition window, so this PR proactively adds
first-class Python 3.14 support across the monorepo while preserving backward
compatibility with Python 3.10.

Why now (official Python lifecycle context)

Python branch support phases are defined in the official docs:

  • bugfix: regular bugfix releases
  • security: source-only security fixes
  • end-of-life: no further updates

References:

This change aligns MarkItDown with the current CPython release cadence and
reduces risk as 3.13 progresses through its support lifecycle.

Changes

packages/markitdown

  • Added Programming Language :: Python :: 3.14 classifier in pyproject.toml
  • Upgraded youtube-transcript-api from ~=1.0.0 to ~=1.2.3 for Python 3.14 compatibility

packages/markitdown-mcp, packages/markitdown-ocr, packages/markitdown-sample-plugin

  • Added Programming Language :: Python :: 3.14 classifier in each pyproject.toml

CI (.github/workflows/tests.yml)

  • Added Python 3.14 to the setup-python matrix (with 3.10, 3.11, 3.12)

Docker

  • Updated base images:
    • python:3.13-slim-bullseye -> python:3.14-slim-bullseye
    • in root Dockerfile and packages/markitdown-mcp/Dockerfile

Documentation (README.md)

  • Updated prerequisites to explicitly state support for Python 3.10–3.14
  • Updated uv venv and conda create examples to use Python 3.14

Test Results

Full suite (hatch test) was validated locally in Docker across official
python:X.Y-slim-bookworm images:

  • Python 3.10: PASS
  • Python 3.11: PASS
  • Python 3.12: PASS
  • Python 3.13: PASS
  • Python 3.14: PASS

Observed result per run: 333 passed, 3 skipped.

Skipped tests (test_module_misc, test_pdf_memory) are pre-existing and
consistent across all tested Python versions.

Backward Compatibility

  • requires-python = ">=3.10" remains unchanged
  • No public API changes
  • Existing optional dependency groups remain intact

Checklist

  • Added official Python 3.14 support
  • Preserved Python 3.10 compatibility
  • Updated package classifiers across all relevant packages
  • Updated dependency for Python 3.14 compatibility
  • Updated CI and Docker runtime baseline
  • Updated README documentation
  • No breaking changes introduced
  • Complies with Microsoft repository contribution expectations

shatovilya and others added 2 commits June 3, 2026 15:10
Extend CI testing to Python 3.14, add PyPI classifiers across all
packages, document 3.10–3.14 support in the README, and bump Docker
images to python:3.14 while keeping requires-python >=3.10.

Co-authored-by: Cursor <cursoragent@cursor.com>
…bility

Updated youtube-transcript-api dependency from ~=1.0.0 to ~=1.2.3
to ensure compatibility with Python 3.14.

Co-authored-by: Cursor <cursoragent@cursor.com>
@shatovilya

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

@shatovilya shatovilya changed the title feat: add official Python 3.14 support and bump youtube-transcript-api for compatibility add official Python 3.14 support and bump youtube-transcript-api for compatibility Jun 8, 2026
@shatovilya shatovilya changed the title add official Python 3.14 support and bump youtube-transcript-api for compatibility add Python 3.14 support and bump youtube-transcript-api for compatibility Jun 8, 2026

@noezhiya-dot noezhiya-dot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean Python 3.14 support PR. The changes are straightforward and well-scoped:

  • CI matrix updated to include 3.14
  • Docker images bumped from 3.13 to 3.14
  • All pyproject.toml classifiers updated consistently across 4 packages
  • README updated with correct version references
  • youtube-transcript-api bump from ~1.0.0 to ~1.2.3 is a sensible dependency update for 3.14 compatibility

One observation: the Dockerfile base image change from python:3.13-slim-bullseye to python:3.14-slim-bullseye means the production Docker image will now require Python 3.14 to be available. This is forward-looking and appropriate for a project adding 3.14 support, but worth noting for users who rely on the Docker image and may not have 3.14 in their base image registry yet.

All changes look correct. Approve.

@noezhiya-dot

Copy link
Copy Markdown

Code Review: add Python 3.14 support and bump youtube-transcript-api for compatibility

Strengths

  • Adding Python 3.14 to CI test matrix and pyproject.toml classifiers is appropriate.
  • Bumping youtube-transcript-api from ~1.0.0 to ~1.2.3 addresses compatibility.
  • Covers all sub-packages consistently.

Concerns

  1. Dockerfile base image: Changing to python:3.14-slim-bullseye is premature. Python 3.14 is very new and the tag may not be stable. Suggestion: keep 3.13 as the Docker base until 3.14 images are proven stable.

  2. README examples: Changing all python version references from 3.12/3.13 to 3.14 is aggressive. Keep 3.13 as the recommended version in docs. Users on 3.14 can use it, but the docs should not push everyone to the newest version immediately.

  3. youtube-transcript-api bump: Just changing ~1.0.0 to ~1.2.3 — is 1.2.3 actually required for 3.14 compat, or is this just a version bump? If 1.0.0 works on 3.13, this could break existing pinned setups.

The CI + classifier additions are good. The Dockerfile and README should be more conservative. The dependency bump needs a compatibility note.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants