From d61bd24a45b42a0549810b1d17b4e3bbf4dfcbb7 Mon Sep 17 00:00:00 2001 From: Nikita Karamov Date: Fri, 21 Aug 2026 18:24:55 +0200 Subject: [PATCH 1/5] Declare support for Python 3.15 --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index b539dd95..cf0f5818 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ classifiers = [ 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', 'Programming Language :: Python :: 3.14', + 'Programming Language :: Python :: 3.15', 'Programming Language :: Python :: 3 :: Only', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', From 4bbfc1ba4a2b518c7490636be7c64b66d5b66cbc Mon Sep 17 00:00:00 2001 From: Nikita Karamov Date: Fri, 21 Aug 2026 18:25:28 +0200 Subject: [PATCH 2/5] Test on 3.15 in CI --- .github/workflows/tox.yml | 2 ++ tox.ini | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 9c9c5c9e..96347b9d 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -32,6 +32,8 @@ jobs: python-version: '3.13' - tox-env: py314 python-version: '3.14' + - tox-env: py315 + python-version: '3.15' - tox-env: pypy310 python-version: pypy-3.10 - tox-env: pypy311 diff --git a/tox.ini b/tox.ini index 8b331dcb..3874b7b2 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{310, 311, 312, 313, 314}, pypy{310, 311}, pygments, flake8, checkspelling, pep517check, checklinks +envlist = py{310, 311, 312, 313, 314, 315}, pypy{310, 311}, pygments, flake8, checkspelling, pep517check, checklinks isolated_build = True [testenv] From 4fdfb50b4a2cdda8ddff191a1576294962e60008 Mon Sep 17 00:00:00 2001 From: Nikita Karamov Date: Fri, 21 Aug 2026 18:27:27 +0200 Subject: [PATCH 3/5] Update changelog --- docs/changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.md b/docs/changelog.md index ea02e6d3..e156b07a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -16,6 +16,7 @@ See the [Contributing Guide](contributing.md) for details. * Inline processors now resume searching after the previous match, improving performance for repeated inline patterns (#1619). +* Officially support Python 3.15 ### Fixed From 10c212b6578308c7e665a3effdbb420e46992485 Mon Sep 17 00:00:00 2001 From: Nikita Karamov Date: Mon, 24 Aug 2026 08:19:09 +0200 Subject: [PATCH 4/5] Drop support for Python 3.10 --- .github/workflows/tox.yml | 6 +----- docs/changelog.md | 2 +- pyproject.toml | 3 +-- tox.ini | 2 +- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 96347b9d..a09221f4 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -20,10 +20,8 @@ jobs: fail-fast: false max-parallel: 4 matrix: - tox-env: [py310, py311, py312, py313, py314, pypy310, pypy311, pygments] + tox-env: [py311, py312, py313, py314, pypy311, pygments] include: - - tox-env: py310 - python-version: '3.10' - tox-env: py311 python-version: '3.11' - tox-env: py312 @@ -34,8 +32,6 @@ jobs: python-version: '3.14' - tox-env: py315 python-version: '3.15' - - tox-env: pypy310 - python-version: pypy-3.10 - tox-env: pypy311 python-version: pypy-3.11 - tox-env: pygments diff --git a/docs/changelog.md b/docs/changelog.md index e156b07a..43867d93 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -16,7 +16,7 @@ See the [Contributing Guide](contributing.md) for details. * Inline processors now resume searching after the previous match, improving performance for repeated inline patterns (#1619). -* Officially support Python 3.15 +* Officially support Python 3.15 and drop support for Python 3.10 ### Fixed diff --git a/pyproject.toml b/pyproject.toml index cf0f5818..f5e52249 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,14 +19,13 @@ maintainers = [ ] license = "BSD-3-Clause" license-files = ["LICENSE.md"] -requires-python = '>=3.10' +requires-python = '>=3.11' keywords = ['markdown', 'markdown-parser', 'python-markdown', 'markdown-to-html'] classifiers = [ 'Development Status :: 5 - Production/Stable', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', diff --git a/tox.ini b/tox.ini index 3874b7b2..44efd98d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{310, 311, 312, 313, 314, 315}, pypy{310, 311}, pygments, flake8, checkspelling, pep517check, checklinks +envlist = py{311, 312, 313, 314, 315}, pypy{311}, pygments, flake8, checkspelling, pep517check, checklinks isolated_build = True [testenv] From 686003ce691f4affa0f21c9511d17ca537cb7d1c Mon Sep 17 00:00:00 2001 From: Nikita Karamov Date: Mon, 24 Aug 2026 08:21:43 +0200 Subject: [PATCH 5/5] Remove importlib.metadata backport use --- markdown/util.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/markdown/util.py b/markdown/util.py index ceca1e50..29ffa247 100644 --- a/markdown/util.py +++ b/markdown/util.py @@ -103,10 +103,7 @@ @lru_cache(maxsize=None) def get_installed_extensions(): """ Return all entry_points in the `markdown.extensions` group. """ - if sys.version_info >= (3, 10): - from importlib import metadata - else: # `