{"id":1113,"name":"snowballstemmer","ecosystem":"pip","repository_url":"https://github.com/snowballstem/snowball","issues_count":429,"created_at":"2025-06-06T15:01:40.543Z","updated_at":"2025-06-06T15:01:40.543Z","purl":"pkg:pypi/snowballstemmer","metadata":{"id":2924939,"name":"snowballstemmer","ecosystem":"pypi","description":"This package provides 32 stemmers for 30 languages generated from Snowball algorithms.","homepage":"https://github.com/snowballstem/snowball","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/snowballstem/snowball","keywords_array":["stemmer"],"namespace":null,"versions_count":13,"first_release_published_at":"2013-02-15T07:44:45.000Z","latest_release_published_at":"2025-05-09T16:34:50.000Z","latest_release_number":"3.0.1","last_synced_at":"2025-06-06T14:01:25.737Z","created_at":"2022-04-10T12:39:25.318Z","updated_at":"2025-06-06T14:01:25.737Z","registry_url":"https://pypi.org/project/snowballstemmer/","install_command":"pip install snowballstemmer --index-url https://pypi.org/simple","documentation_url":"https://snowballstemmer.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Natural Language :: Arabic","Natural Language :: Armenian","Natural Language :: Basque","Natural Language :: Catalan","Natural Language :: Danish","Natural Language :: Dutch","Natural Language :: English","Natural Language :: Esperanto","Natural Language :: Estonian","Natural Language :: Finnish","Natural Language :: French","Natural Language :: German","Natural Language :: Greek","Natural Language :: Hindi","Natural Language :: Hungarian","Natural Language :: Indonesian","Natural Language :: Irish","Natural Language :: Italian","Natural Language :: Lithuanian","Natural Language :: Nepali","Natural Language :: Norwegian","Natural Language :: Portuguese","Natural Language :: Romanian","Natural Language :: Russian","Natural Language :: Serbian","Natural Language :: Spanish","Natural Language :: Swedish","Natural Language :: Tamil","Natural Language :: Turkish","Natural Language :: Yiddish","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 2","Programming Language :: Python :: 2.6","Programming Language :: Python :: 2.7","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.3","Programming Language :: Python :: 3.4","Programming Language :: Python :: 3.5","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Database","Topic :: Internet :: WWW/HTTP :: Indexing/Search","Topic :: Text Processing :: Indexing","Topic :: Text Processing :: Linguistic"],"normalized_name":"snowballstemmer"},"repo_metadata":{"id":7082708,"uuid":"8372403","full_name":"snowballstem/snowball","owner":"snowballstem","description":"Snowball compiler and stemming algorithms","archived":false,"fork":false,"pushed_at":"2024-04-18T02:03:38.000Z","size":1517,"stargazers_count":718,"open_issues_count":25,"forks_count":172,"subscribers_count":35,"default_branch":"master","last_synced_at":"2024-04-23T10:35:23.676Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://snowballstem.org/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snowballstem.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-02-23T07:17:42.000Z","updated_at":"2024-05-02T05:33:39.648Z","dependencies_parsed_at":"2024-01-15T15:08:52.025Z","dependency_job_id":"dfa08cdc-a5e1-4bd2-afcd-bab12a3d6174","html_url":"https://github.com/snowballstem/snowball","commit_stats":{"total_commits":893,"total_committers":35,"mean_commits":"25.514285714285716","dds":0.3572228443449048,"last_synced_commit":"ca6abf367b3ec26ad23a0be37d1a9c4fec02d582"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowballstem","download_url":"https://codeload.github.com/snowballstem/snowball/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":218163493,"owners_count":16287395,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"snowballstem","name":"Snowball Stemming language and algorithms","uuid":"3676704","kind":"organization","description":"Snowball is a small string processing language designed for creating stemming algorithms for use in Information Retrieval","email":null,"website":"https://snowballstem.org/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/3676704?v=4","repositories_count":5,"last_synced_at":"2024-03-25T20:00:55.881Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/snowballstem","funding_links":[],"total_stars":982,"followers":31,"following":0,"created_at":"2022-11-02T16:23:00.694Z","updated_at":"2024-03-25T20:00:56.698Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowballstem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowballstem/repositories"},"tags":[{"name":"v2.2.0","sha":"48a67a2831005f49c48ec29a5837640e23e54e6b","kind":"tag","published_at":"2021-11-10T03:53:06.000Z","download_url":"https://codeload.github.com/snowballstem/snowball/tar.gz/v2.2.0","html_url":"https://github.com/snowballstem/snowball/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/tags/v2.2.0/manifests"},{"name":"v2.1.0","sha":"4764395431c8f2a0b4fe18b816ab1fc966a45837","kind":"tag","published_at":"2021-01-21T05:08:16.000Z","download_url":"https://codeload.github.com/snowballstem/snowball/tar.gz/v2.1.0","html_url":"https://github.com/snowballstem/snowball/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"c70ed64f9d41c1032fba4e962b054f8e9d489a74","kind":"tag","published_at":"2019-10-02T03:35:03.000Z","download_url":"https://codeload.github.com/snowballstem/snowball/tar.gz/v2.0.0","html_url":"https://github.com/snowballstem/snowball/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowballstem%2Fsnowball/tags/v2.0.0/manifests"}]},"repo_metadata_updated_at":"2024-09-08T15:54:13.547Z","dependent_packages_count":140,"downloads":23900553,"downloads_period":"last-month","dependent_repos_count":42225,"rankings":{"downloads":0.07978620964147562,"dependent_repos_count":0.03154765070881335,"dependent_packages_count":0.14398201050243303,"stargazers_count":3.155865570324665,"forks_count":4.700416539039301,"docker_downloads_count":0.267971614451025,"average":1.3965949324446187},"purl":"pkg:pypi/snowballstemmer","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/snowballstemmer","docker_dependents_count":2555,"docker_downloads_count":655756199,"usage_url":"https://repos.ecosyste.ms/usage/pypi/snowballstemmer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/snowballstemmer/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/snowballstemmer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/snowballstemmer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/snowballstemmer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/snowballstemmer/related_packages","maintainers":[{"uuid":"mitya57","login":"mitya57","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/mitya57/","role":null,"created_at":"2022-12-21T11:08:48.787Z","updated_at":"2022-12-21T11:08:48.787Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mitya57/packages"},{"uuid":"shibu","login":"shibu","name":null,"email":null,"url":null,"packages_count":9,"html_url":"https://pypi.org/user/shibu/","role":null,"created_at":"2022-12-21T11:08:48.801Z","updated_at":"2022-12-21T11:08:48.801Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/shibu/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690322,"maintainers_count":292759,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":175,"unique_repositories_count_past_30_days":3,"recent_issues":[{"uuid":"4886079563","node_id":"PR_kwDOH8gfRs7xsmsL","number":249,"state":"closed","title":"Bump the all-dependencies group with 23 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-15T01:18:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-14T18:47:23.000Z","updated_at":"2026-07-15T01:18:49.000Z","time_to_close":23484,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":23,"packages":[{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"docutils","old_version":"0.22.3","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"packaging","old_version":"25.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"ruff","old_version":"0.14.9","new_version":"0.15.21","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.3.0","new_version":"1.5.1","repository_url":"https://github.com/pypa/build"},{"name":"pypi-attestations","old_version":"0.0.28","new_version":"0.0.29","repository_url":"https://github.com/pypi/pypi-attestations"},{"name":"pytest","old_version":"9.0.1","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"cython","old_version":"3.2.2","new_version":"3.2.8","repository_url":"https://github.com/cython/cython"},{"name":"setuptools","old_version":"80.9.0","new_version":"83.0.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"mypy","old_version":"1.19.1","new_version":"2.3.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.44.0","new_version":"1.1.1","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pyright","old_version":"1.1.407","new_version":"1.1.411","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"ty","old_version":"0.0.1a30","new_version":"0.0.59","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20251115","new_version":"0.22.3.20260712","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260712","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 23 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.3` | `0.23` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [roman-numerals](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.15.21` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.5.1` |\n| [pypi-attestations](https://github.com/pypi/pypi-attestations) | `0.0.28` | `0.0.29` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.1.1` |\n| [cython](https://github.com/cython/cython) | `3.2.2` | `3.2.8` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `83.0.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.44.0` | `1.1.1` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.407` | `1.1.411` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a30` | `0.0.59` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20251115` | `0.22.3.20260712` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260712` |\n\nUpdates `pygments` from 2.19.2 to 2.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.20.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.20.0\u003c/h2\u003e\n\u003cp\u003e(released March 29th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/708197d82827ba2d5ca78bcbb653c7102ce86dcd\"\u003e\u003ccode\u003e708197d\u003c/code\u003e\u003c/a\u003e Fix underline length.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d4538ae8621d766ecc91ff59caf76ab75983abc\"\u003e\u003ccode\u003e1d4538a\u003c/code\u003e\u003c/a\u003e Prepare 2.20 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/2ceaee4e634eebae2d10a47fd05406871f6bac8f\"\u003e\u003ccode\u003e2ceaee4\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/e3a3c54b58c7f80bc4db887e471d4f91c77844ed\"\u003e\u003ccode\u003ee3a3c54\u003c/code\u003e\u003c/a\u003e Fix Haskell lexer: handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d7c3453e342dac319f58e4091f4ef183cc49d802\"\u003e\u003ccode\u003ed7c3453\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3071\"\u003e#3071\u003c/a\u003e from pygments/harden-html-formatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0f97e7c37d44abfa4ddfddf44a3290fdad586034\"\u003e\u003ccode\u003e0f97e7c\u003c/code\u003e\u003c/a\u003e Harden the HTML formatter against CSS.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9f981b2ba42b88ca5bdcebf12cd01efd7cd80aec\"\u003e\u003ccode\u003e9f981b2\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d889151024e9a53f3702a60558b29b070306e9e\"\u003e\u003ccode\u003e1d88915\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c3d93adb9827fc054c3c12b47bde31c781a36a93\"\u003e\u003ccode\u003ec3d93ad\u003c/code\u003e\u003c/a\u003e Fix ASN.1 lexer: recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/4f06bcf8a5ba3f2b5bda24a26ccf041a1a65d91e\"\u003e\u003ccode\u003e4f06bcf\u003c/code\u003e\u003c/a\u003e fix bad behaving backtracking regex in CommonLispLexer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.3 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.15.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.21\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--add-ignore\u003c/code\u003e for adding \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26346\"\u003e#26346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Drop \u003ccode\u003eC409\u003c/code\u003e tuple comprehension preview behavior (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25707\"\u003e#25707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid whitespace normalization when formatting comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26455\"\u003e#26455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Lint and fix use of deprecated \u003ccode\u003eabc\u003c/code\u003e decorators (\u003ccode\u003eUP051\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26417\"\u003e#26417\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine non-empty f-string detection (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26526\"\u003e#26526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect syntax errors in individual notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26419\"\u003e#26419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-implicit-str-concat\u003c/code\u003e] Fix \u003ccode\u003eISC003\u003c/code\u003e autofix incorrectly stripping \u003ccode\u003e+\u003c/code\u003e from comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26554\"\u003e#26554\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-executable\u003c/code\u003e] Mark \u003ccode\u003eEXE004\u003c/code\u003e fix as unsafe (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mark \u003ccode\u003ePYI061\u003c/code\u003e fixes as unsafe in Python files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26533\"\u003e#26533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epydocstyle\u003c/code\u003e] Skip \u003ccode\u003eoverload-with-docstring\u003c/code\u003e in stub files (\u003ccode\u003eD418\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26318\"\u003e#26318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid per-token source index visitor calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26506\"\u003e#26506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache parenthesized expression boundaries in the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26344\"\u003e#26344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of rendering edits in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26565\"\u003e#26565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInline \u003ccode\u003efits_element\u003c/code\u003e in formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26429\"\u003e#26429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInline formatter printing hot paths (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26504\"\u003e#26504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily create builtin bindings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26510\"\u003e#26510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip empty trivia scans in the source indexer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26507\"\u003e#26507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse ICF for macOS release builds (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25780\"\u003e#25780\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--extend-exclude\u003c/code\u003e to \u003ccode\u003eruff format\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26372\"\u003e#26372\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u0026quot;How does Ruff's import sorting compare to isort?\u0026quot; link to README (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26530\"\u003e#26530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Mozilla Firefox repository link in README (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26537\"\u003e#26537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix misleading docstring for \u003ccode\u003emako-templates\u003c/code\u003e (\u003ccode\u003eS702\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26432\"\u003e#26432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix non-triggering example for \u003ccode\u003eif-key-in-dict-del\u003c/code\u003e (\u003ccode\u003eRUF051\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26433\"\u003e#26433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EkriirkE\"\u003e\u003ccode\u003e@​EkriirkE\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tingerrr\"\u003e\u003ccode\u003e@​tingerrr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.21\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--add-ignore\u003c/code\u003e for adding \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26346\"\u003e#26346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Drop \u003ccode\u003eC409\u003c/code\u003e tuple comprehension preview behavior (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25707\"\u003e#25707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid whitespace normalization when formatting comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26455\"\u003e#26455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Lint and fix use of deprecated \u003ccode\u003eabc\u003c/code\u003e decorators (\u003ccode\u003eUP051\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26417\"\u003e#26417\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine non-empty f-string detection (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26526\"\u003e#26526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect syntax errors in individual notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26419\"\u003e#26419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-implicit-str-concat\u003c/code\u003e] Fix \u003ccode\u003eISC003\u003c/code\u003e autofix incorrectly stripping \u003ccode\u003e+\u003c/code\u003e from comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26554\"\u003e#26554\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-executable\u003c/code\u003e] Mark \u003ccode\u003eEXE004\u003c/code\u003e fix as unsafe (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mark \u003ccode\u003ePYI061\u003c/code\u003e fixes as unsafe in Python files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26533\"\u003e#26533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epydocstyle\u003c/code\u003e] Skip \u003ccode\u003eoverload-with-docstring\u003c/code\u003e in stub files (\u003ccode\u003eD418\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26318\"\u003e#26318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid per-token source index visitor calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26506\"\u003e#26506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache parenthesized expression boundaries in the formatter (\u003ca href=\"https://redirect.github.com/as...\n\n_Description has been truncated_","html_url":"https://github.com/sailfishos-mirror/sphinx/pull/249","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fsphinx/issues/249","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/249/packages"},{"uuid":"4789069725","node_id":"PR_kwDOHF08OM7s2qWE","number":1296,"state":"open","title":"chore(deps): bump snowballstemmer from 2.2.0 to 3.1.1 in /sdk/python","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T20:42:36.000Z","updated_at":"2026-07-01T20:42:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":"/sdk/python","ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 2.2.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v2.2.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=2.2.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/dolanor/dagger/pull/1296","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dolanor%2Fdagger/issues/1296","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1296/packages"},{"uuid":"4781325740","node_id":"PR_kwDOHPrDWs7sdMhk","number":638,"state":"closed","title":"Bump the myst-parser-dependencies group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":"2026-07-01T00:42:17.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-01T00:23:09.000Z","updated_at":"2026-07-01T00:56:27.000Z","time_to_close":1148,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"myst-parser-dependencies","update_count":4,"packages":[{"name":"docutils","old_version":"0.22.4","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"mdit-py-plugins","old_version":"0.5.0","new_version":"0.6.1","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"5.0.0","new_version":"5.1.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps the myst-parser-dependencies group with 4 updates in the / directory: [docutils](https://github.com/rtfd/recommonmark), [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins), [myst-parser](https://github.com/executablebooks/MyST-Parser) and [snowballstemmer](https://github.com/snowballstem/snowball).\n\nUpdates `docutils` from 0.22.4 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mdit-py-plugins` from 0.5.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/releases\"\u003emdit-py-plugins's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/139\"\u003eexecutablebooks/mdit-py-plugins#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.1 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/140\"\u003eexecutablebooks/mdit-py-plugins#140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add AGENTS.md and copilot-setup-steps workflow by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ NEW: Add superscript plugin and tests by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add GFM autolink and composite GFM plugins by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/135\"\u003eexecutablebooks/mdit-py-plugins#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fix pre-commit by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/136\"\u003eexecutablebooks/mdit-py-plugins#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/137\"\u003eexecutablebooks/mdit-py-plugins#137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/blob/master/CHANGELOG.md\"\u003emdit-py-plugins's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.6.1 - 2026-05-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eField lists inside list items (or other indented containers) would recursively nest each field inside the previous one, instead of being siblings.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.6.0 - 2026-05-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003egfm_autolink\u003c/code\u003e plugin implements \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolink literals\u003c/a\u003e,\nauto-linking URLs and email addresses without requiring angle brackets:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003eVisit www.example.com or contact user@example.com\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe \u003ccode\u003egfm\u003c/code\u003e composite plugin enables a full Github Flavored Markdown (GFM)-like configuration in a single call\n(tables, strikethrough, autolinks, task lists, alerts, and footnotes).\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax\"\u003ethe GitHub docs\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRequires markdown-it-py \u0026gt;= 4.1.0.\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add superscript plugin and tests, thanks to \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003ePorted from \u003ca href=\"https://github.com/markdown-it/markdown-it-sup\"\u003emarkdown-it-sup\u003c/a\u003e.\nRenders superscript text using \u003ccode\u003e^..^\u003c/code\u003e syntax:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003e29^th^ of May\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/da70e05b7630c38047d1921ef21d1aadc34c1ea9\"\u003e\u003ccode\u003eda70e05\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.1 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/f41d88c17c90dac4f9fd77418e1dcc2ba2c4ea9b\"\u003e\u003ccode\u003ef41d88c\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b8735072c4a0d406ad29a87f472a638f6d4ac3f5\"\u003e\u003ccode\u003eb873507\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.0 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b77a18bcb3a8a640dbfc57dcb901fa18cee74bf8\"\u003e\u003ccode\u003eb77a18b\u003c/code\u003e\u003c/a\u003e 🔧 Fix pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/28a97783ee58785003bc9c84e0821bc3babb35a3\"\u003e\u003ccode\u003e28a9778\u003c/code\u003e\u003c/a\u003e ✨ Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/39c681fddac49430ee4a748433bcfae5888b7576\"\u003e\u003ccode\u003e39c681f\u003c/code\u003e\u003c/a\u003e ✨ NEW: Add superscript plugin and tests (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/62f00586e872e62a700fb13f65e254c686474fc6\"\u003e\u003ccode\u003e62f0058\u003c/code\u003e\u003c/a\u003e 🔧 Add AGENTS.md and copilot-setup-steps workflow (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 5.0.0 to 5.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003ch2\u003e✨ New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#alerts-github-style-callouts\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#gfm-autolinks\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#code-fences-using-colons\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e👌 Improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ccode\u003emyst_gfm_only\u003c/code\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1126\"\u003e#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1129\"\u003e#1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⬆️ Dependency Upgrades\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mb\"\u003e\u003ccode\u003e@​mb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1126\"\u003eexecutablebooks/MyST-Parser#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Bizordec\"\u003e\u003ccode\u003e@​Bizordec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1114\"\u003eexecutablebooks/MyST-Parser#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilia-kats\"\u003e\u003ccode\u003e@​ilia-kats\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1110\"\u003eexecutablebooks/MyST-Parser#1110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0 - 2026-05-13\u003c/h2\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/alerts\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/gfm-autolink\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/colon_fence\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👌 Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003e\u003ccode\u003emyst_gfm_only\u003c/code\u003e\u003c/a\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1110\"\u003egh-pr:1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1133\"\u003egh-pr:1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1114\"\u003egh-pr:1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1126\"\u003egh-pr:1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1129\"\u003egh-pr:1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1134\"\u003egh-pr:1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⬆️ Dependency Upgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1117\"\u003egh-pr:1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ev5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/2871eb95750873ccec2c4ab1dac0568815b64ca5\"\u003e\u003ccode\u003e2871eb9\u003c/code\u003e\u003c/a\u003e 🚀 Release v5.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1135\"\u003e#1135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cc5db37fd06445d7d023f7f2e0c2c073730be9cf\"\u003e\u003ccode\u003ecc5db37\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Pin mdit-py-plugins\u0026gt;=0.6.1 for nested field list fix (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/4ce57f94af31de53c8790ccfffa3107c64241d0d\"\u003e\u003ccode\u003e4ce57f9\u003c/code\u003e\u003c/a\u003e 👌 Stop directive-option parsing at colon fences (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cfcc3278f9e8c7508aae4cea82f1dd9c5c111183\"\u003e\u003ccode\u003ecfcc327\u003c/code\u003e\u003c/a\u003e ⬆️ Bump mypy from 2.0.0 to 2.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1131\"\u003e#1131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/691738c3d897f82577440e18079d8b990edb8e34\"\u003e\u003ccode\u003e691738c\u003c/code\u003e\u003c/a\u003e ⬆️ Bump ruff from 0.15.10 to 0.15.12 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1132\"\u003e#1132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/0fb1ae983d7b0df68bd02a9f77b0bc45057edbaf\"\u003e\u003ccode\u003e0fb1ae9\u003c/code\u003e\u003c/a\u003e 👌 IMPROVE: MathJax 4 compatibility (Sphinx 9) (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f153b4b8ae68cbe77b41942147cf5cb6464168f0\"\u003e\u003ccode\u003ef153b4b\u003c/code\u003e\u003c/a\u003e ⬆️ Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/93acf8dae502aba484b14a1d291366fc21f839e6\"\u003e\u003ccode\u003e93acf8d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1095\"\u003e#1095\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/a5f1d6963bc3ee361d25309a24ccc42e6860fd54\"\u003e\u003ccode\u003ea5f1d69\u003c/code\u003e\u003c/a\u003e ⬆️ Update pygments requirement from \u0026lt;2.20 to \u0026lt;2.21 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/838129687219517e31a395736397c957d93532dd\"\u003e\u003ccode\u003e8381296\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Use docname instead of source path in warning locations (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e","html_url":"https://github.com/ryu22e/cookiecutter-sphinx-revealjs/pull/638","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryu22e%2Fcookiecutter-sphinx-revealjs/issues/638","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/638/packages"},{"uuid":"4667961567","node_id":"PR_kwDOH8gfRs7mrymG","number":217,"state":"closed","title":"Bump the all-dependencies group with 22 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-16T00:55:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-15T18:51:12.000Z","updated_at":"2026-06-16T00:55:42.000Z","time_to_close":21868,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":22,"packages":[{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"docutils","old_version":"0.22.3","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"packaging","old_version":"25.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"ruff","old_version":"0.14.9","new_version":"0.15.17","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.3.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pypi-attestations","old_version":"0.0.28","new_version":"0.0.29","repository_url":"https://github.com/pypi/pypi-attestations"},{"name":"pytest","old_version":"9.0.1","new_version":"9.1.0","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"cython","old_version":"3.2.2","new_version":"3.2.5","repository_url":"https://github.com/cython/cython"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"mypy","old_version":"1.19.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.44.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pyright","old_version":"1.1.407","new_version":"1.1.410","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"ty","old_version":"0.0.1a30","new_version":"0.0.49","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20251115","new_version":"0.22.3.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.3` | `0.23` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [roman-numerals](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.15.17` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.5.0` |\n| [pypi-attestations](https://github.com/pypi/pypi-attestations) | `0.0.28` | `0.0.29` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.1.0` |\n| [cython](https://github.com/cython/cython) | `3.2.2` | `3.2.5` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.1` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.44.0` | `1.0.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.407` | `1.1.410` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a30` | `0.0.49` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20251115` | `0.22.3.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260518` |\n\nUpdates `pygments` from 2.19.2 to 2.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.20.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.20.0\u003c/h2\u003e\n\u003cp\u003e(released March 29th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/708197d82827ba2d5ca78bcbb653c7102ce86dcd\"\u003e\u003ccode\u003e708197d\u003c/code\u003e\u003c/a\u003e Fix underline length.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d4538ae8621d766ecc91ff59caf76ab75983abc\"\u003e\u003ccode\u003e1d4538a\u003c/code\u003e\u003c/a\u003e Prepare 2.20 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/2ceaee4e634eebae2d10a47fd05406871f6bac8f\"\u003e\u003ccode\u003e2ceaee4\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/e3a3c54b58c7f80bc4db887e471d4f91c77844ed\"\u003e\u003ccode\u003ee3a3c54\u003c/code\u003e\u003c/a\u003e Fix Haskell lexer: handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d7c3453e342dac319f58e4091f4ef183cc49d802\"\u003e\u003ccode\u003ed7c3453\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3071\"\u003e#3071\u003c/a\u003e from pygments/harden-html-formatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0f97e7c37d44abfa4ddfddf44a3290fdad586034\"\u003e\u003ccode\u003e0f97e7c\u003c/code\u003e\u003c/a\u003e Harden the HTML formatter against CSS.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9f981b2ba42b88ca5bdcebf12cd01efd7cd80aec\"\u003e\u003ccode\u003e9f981b2\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d889151024e9a53f3702a60558b29b070306e9e\"\u003e\u003ccode\u003e1d88915\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c3d93adb9827fc054c3c12b47bde31c781a36a93\"\u003e\u003ccode\u003ec3d93ad\u003c/code\u003e\u003c/a\u003e Fix ASN.1 lexer: recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/4f06bcf8a5ba3f2b5bda24a26ccf041a1a65d91e\"\u003e\u003ccode\u003e4f06bcf\u003c/code\u003e\u003c/a\u003e fix bad behaving backtracking regex in CommonLispLexer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.3 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.15.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.17\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct capacity for common cases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25451\"\u003e#25451\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve whitespace for Quarto cell option comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25641\"\u003e#25641\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rule names in \u003ccode\u003eruff rule\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25640\"\u003e#25640\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix playground diagnostics scrollbars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25642\"\u003e#25642\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SuryanshSS1011\"\u003e\u003ccode\u003e@​SuryanshSS1011\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romero-deshaw\"\u003e\u003ccode\u003e@​romero-deshaw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/karlhillx\"\u003e\u003ccode\u003e@​karlhillx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.17\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct...\n\n_Description has been truncated_","html_url":"https://github.com/sailfishos-mirror/sphinx/pull/217","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fsphinx/issues/217","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/217/packages"},{"uuid":"4644838350","node_id":"PR_kwDOM92Pn87liJuq","number":32,"state":"open","title":"Bump the non-security-minor-patch group with 16 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-11T23:06:49.000Z","updated_at":"2026-06-11T23:07:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"non-security-minor-patch","update_count":16,"packages":[{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ipython","old_version":"9.12.0","new_version":"9.14.1","repository_url":"https://github.com/ipython/ipython"},{"name":"certifi","old_version":"2026.2.25","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.6","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"idna","old_version":"3.11","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"docutils","old_version":"0.18.1","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"jedi","old_version":"0.19.2","new_version":"0.20.0","repository_url":"https://github.com/davidhalter/jedi"},{"name":"matplotlib-inline","old_version":"0.2.1","new_version":"0.2.2","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.6","new_version":"0.8.7","repository_url":"https://github.com/davidhalter/parso"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"traitlets","old_version":"5.14.3","new_version":"5.15.1","repository_url":"https://github.com/ipython/traitlets"},{"name":"wcwidth","old_version":"0.6.0","new_version":"0.8.1","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the non-security-minor-patch group with 16 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [ipython](https://github.com/ipython/ipython) | `9.12.0` | `9.14.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.2.25` | `2026.5.20` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.6` | `3.4.7` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.18` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.18.1` | `0.23` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.19.2` | `0.20.0` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.2.1` | `0.2.2` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.6` | `0.8.7` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.14.3` | `5.15.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.6.0` | `0.8.1` |\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ipython` from 9.12.0 to 9.14.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/352c35b9e841fe20c2a0dc09af67e180e6854322\"\u003e\u003ccode\u003e352c35b\u003c/code\u003e\u003c/a\u003e release 9.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/df72b1f8d94e874947f6425dbbcca614942aa3f5\"\u003e\u003ccode\u003edf72b1f\u003c/code\u003e\u003c/a\u003e Add forward compatibility for pdb.Pdb's mode argument (\u003ca href=\"https://redirect.github.com/ipython/ipython/issues/15235\"\u003e#15235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/a957d81c3177d33fc9d0b5fe123e58dd8cbf87e7\"\u003e\u003ccode\u003ea957d81\u003c/code\u003e\u003c/a\u003e Handle pdb.Pdb \u003ccode\u003emode\u003c/code\u003e argument and test signature compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/3e1c0544e141d55cd232259d4828a633e952f5fc\"\u003e\u003ccode\u003e3e1c054\u003c/code\u003e\u003c/a\u003e ci: add zizmor GitHub Actions security analysis and harden workflows (\u003ca href=\"https://redirect.github.com/ipython/ipython/issues/15238\"\u003e#15238\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/0181ae38b68b929f464c349ad139e1080ee60a93\"\u003e\u003ccode\u003e0181ae3\u003c/code\u003e\u003c/a\u003e ci: add zizmor GitHub Actions security analysis and harden workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/fb831cc06fe27a12f5d52f6608fa90857428748c\"\u003e\u003ccode\u003efb831cc\u003c/code\u003e\u003c/a\u003e back to dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/9d1f24b9687279362b66f4e8c8a36ffde895a05d\"\u003e\u003ccode\u003e9d1f24b\u003c/code\u003e\u003c/a\u003e release 9.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/d8b9d11f2796300d914a88dc08de35ce93bc5aa0\"\u003e\u003ccode\u003ed8b9d11\u003c/code\u003e\u003c/a\u003e Add IPython 9.14 release notes (\u003ca href=\"https://redirect.github.com/ipython/ipython/issues/15228\"\u003e#15228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/80cc1b963349ebc472b69f7da505cccebb2e6ad5\"\u003e\u003ccode\u003e80cc1b9\u003c/code\u003e\u003c/a\u003e Apply suggestions from code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/99feaadc543d43abc9287734651f4b618305a6bb\"\u003e\u003ccode\u003e99feaad\u003c/code\u003e\u003c/a\u003e Prepare release notes for 9.14\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipython/compare/9.12.0...9.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.2.25 to 2026.5.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.02.25...2026.05.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.6 to 3.4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.6...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.11 to 3.18\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\nas arguments or on standard input, with options to select A-label\nor U-label output and control error handling.\u003c/li\u003e\n\u003cli\u003eRaise the minimum supported Python version to 3.9\u003c/li\u003e\n\u003cli\u003eVarious code quality improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f39ea903ba49eb5a0b2c6723c9a929b41ed4a0f1\"\u003e\u003ccode\u003ef39ea90\u003c/code\u003e\u003c/a\u003e Release 3.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/40f4e407bc7452da37c24b0c112dcda9a5b299ba\"\u003e\u003ccode\u003e40f4e40\u003c/code\u003e\u003c/a\u003e Pre-release 3.18rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1a5bf80f2fa40454589e6144efe5f72015ef9d24\"\u003e\u003ccode\u003e1a5bf80\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/253\"\u003e#253\u003c/a\u003e from kjd/lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5bbb26fc86e28c4ee1434ae8ae8db76de4c2a5ac\"\u003e\u003ccode\u003e5bbb26f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c532bae5270489cef8faf9f6b1eb70cbcb454c6d\"\u003e\u003ccode\u003ec532bae\u003c/code\u003e\u003c/a\u003e Rename decode() lenient= option to display= (issue \u003ca href=\"https://redirect.github.com/kjd/idna/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0b1758ba11952a2e88fd6141ffa620409bff0580\"\u003e\u003ccode\u003e0b1758b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/252\"\u003e#252\u003c/a\u003e from kjd/release-3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f48619c4cea6859b938d560fdd9feb898e678567\"\u003e\u003ccode\u003ef48619c\u003c/code\u003e\u003c/a\u003e Release 3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7421ba8003227f816142ab40178e3a7d204e6847\"\u003e\u003ccode\u003e7421ba8\u003c/code\u003e\u003c/a\u003e Pre-release 3.17rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/22ebb73b164081f209449b50162eb7ce086e96a4\"\u003e\u003ccode\u003e22ebb73\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/251\"\u003e#251\u003c/a\u003e from kjd/structure-optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2a7ac0a58c788d50112a5003af545a83807fb108\"\u003e\u003ccode\u003e2a7ac0a\u003c/code\u003e\u003c/a\u003e Drop redundant parallel-arrays comment from uts46data\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.11...v3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.6.3 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues. Impact was limited to specific use cases detailed in the accompanying advisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been read and decompressed partially. (Reported by \u003ca href=\"https://github.com/Cycloctane\"\u003e\u003ccode\u003e@​Cycloctane\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or \u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed using the official \u003ca href=\"https://pypi.org/project/brotli/\"\u003eBrotli\u003c/a\u003e library. (Reported by \u003ca href=\"https://github.com/kimkou2024\"\u003e\u003ccode\u003e@​kimkou2024\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee GHSA-mf9v-mfxr-j63j for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip sensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when redirecting to a different host. (GHSA-qccp-gfcp-xxvc reported by \u003ca href=\"https://github.com/christos-spearbit\"\u003e\u003ccode\u003e@​christos-spearbit\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better visibility of existing deprecation notices. Rescheduled the removal of deprecated features to version 3.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3763\"\u003eurllib3/urllib3#3763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3720\"\u003eurllib3/urllib3#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003eurllib3/urllib3#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3777\"\u003eurllib3/urllib3#3777\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed data buffered from previous partial reads. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3636\"\u003eurllib3/urllib3#3636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the response after a partial read when \u003ccode\u003ecache_content=True\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4967\"\u003eurllib3/urllib3#4967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.stream()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to handle \u003ccode\u003eamt=0\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3793\"\u003eurllib3/urllib3#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003e_TYPE_BODY\u003c/code\u003e type alias to include missing \u003ccode\u003eIterable[str]\u003c/code\u003e, matching the documented and runtime behavior of chunked request bodies. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3798\"\u003eurllib3/urllib3#3798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eLocationParseError\u003c/code\u003e when paths resembling schemeless URIs were passed to \u003ccode\u003eHTTPConnectionPool.urlopen()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3352\"\u003eurllib3/urllib3#3352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eBaseHTTPResponse.readinto()\u003c/code\u003e type annotation to accept \u003ccode\u003ememoryview\u003c/code\u003e in addition to \u003ccode\u003ebytearray\u003c/code\u003e, matching the \u003ccode\u003eio.RawIOBase.readinto\u003c/code\u003e contract and enabling use with \u003ccode\u003eio.BufferedReader\u003c/code\u003e without type errors. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3764\"\u003eurllib3/urllib3#3764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.7.0 (2026-05-07)\u003c/h1\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues.\nImpact was limited to specific use cases detailed in the accompanying\nadvisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been\nread and decompressed partially.\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or\n\u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed\nusing the official \u003ccode\u003eBrotli \u0026lt;https://pypi.org/project/brotli/\u0026gt;\u003c/code\u003e__ library.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee \u003ccode\u003eGHSA-mf9v-mfxr-j63j \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j\u0026gt;\u003c/code\u003e__\nfor details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip\nsensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when\nredirecting to a different host.\n(\u003ccode\u003eGHSA-qccp-gfcp-xxvc \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc\u0026gt;\u003c/code\u003e__)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better\nvisibility of existing deprecation notices. Rescheduled the removal of\ndeprecated features to version 3.0.\n(\u003ccode\u003e[#3763](https://github.com/urllib3/urllib3/issues/3763) \u0026lt;https://github.com/urllib3/urllib3/issues/3763\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9.\n(\u003ccode\u003e[#3720](https://github.com/urllib3/urllib3/issues/3720) \u0026lt;https://github.com/urllib3/urllib3/issues/3720\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10.\n(\u003ccode\u003e[#4979](https://github.com/urllib3/urllib3/issues/4979) \u0026lt;https://github.com/urllib3/urllib3/issues/4979\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0.\n(\u003ccode\u003e[#3777](https://github.com/urllib3/urllib3/issues/3777) \u0026lt;https://github.com/urllib3/urllib3/issues/3777\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed\ndata buffered from previous partial reads.\n(\u003ccode\u003e[#3636](https://github.com/urllib3/urllib3/issues/3636) \u0026lt;https://github.com/urllib3/urllib3/issues/3636\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the\nresponse after a partial read when \u003ccode\u003ecache_content=True\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/9a950b92d999f906b6020bb2d1076ee56cddd5d2\"\u003e\u003ccode\u003e9a950b9\u003c/code\u003e\u003c/a\u003e Release 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/5ec0de499b9166ca71c65ab04f2a7e4eb0d66fcc\"\u003e\u003ccode\u003e5ec0de4\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2bdcc44d1e163fb5cc48a8662425e35e15adfe6a\"\u003e\u003ccode\u003e2bdcc44\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/f45b0df09d8620ac6ed0491eb9362c8c87b7bc2c\"\u003e\u003ccode\u003ef45b0df\u003c/code\u003e\u003c/a\u003e Fix a misleading example for \u003ccode\u003eProxyManager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/577193ca029872384f82c133449e0935f6d8a64b\"\u003e\u003ccode\u003e577193c\u003c/code\u003e\u003c/a\u003e Switch to nightly PyPy3.11 in CI for now (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/e90af45bb006c3a452a3a21644a2681523f5c7fc\"\u003e\u003ccode\u003ee90af45\u003c/code\u003e\u003c/a\u003e Avoid infinite loop in \u003ccode\u003eHTTPResponse.read_chunked\u003c/code\u003e when \u003ccode\u003eamt=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4974\"\u003e#4974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/67ed74fdaec6659a6534621ec8e3aaaa6f976210\"\u003e\u003ccode\u003e67ed74f\u003c/code\u003e\u003c/a\u003e Bump dev dependencies (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4972\"\u003e#4972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3abd481097b54d87b574ac7ea593c3f40938a84d\"\u003e\u003ccode\u003e3abd481\u003c/code\u003e\u003c/a\u003e Upgrade mypy to version 1.20.2 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2b8725dfcac4f21d4d93cc0cc3a64a33af08f890\"\u003e\u003ccode\u003e2b8725d\u003c/code\u003e\u003c/a\u003e Drop support for EOL PyPy3.10 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2944b2a0a6c573f5548a39cfd17196f98ee21b33\"\u003e\u003ccode\u003e2944b2a\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003esetup-chrome\u003c/code\u003e and \u003ccode\u003esetup-firefox\u003c/code\u003e to fix warnings (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `decorator` from 5.2.1 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/micheles/decorator/blob/master/CHANGES.md\"\u003edecorator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2026-05-18)\u003c/h2\u003e\n\u003cp\u003eAdded license SPDX identifier to pyproject.toml (reported by\nChristian Lackas).\u003c/p\u003e\n\u003ch2\u003e5.3.0 (2026-05-17)\u003c/h2\u003e\n\u003cp\u003eAdded official support for Python 3.14 (thanks to Hugo van Kemenade,\nDavid Cain and the GitHub user bersbersbers).\nFixed a bug with \u0026quot;return await\u0026quot; contributed by Kadir Can Ozden.\nMoved decorator.py to a package structure (\u003ccode\u003edecorator/__init__.py\u003c/code\u003e) and\nadded a stub file (\u003ccode\u003edecorator/__init__.pyi\u003c/code\u003e) contributed by Marco Gorelli.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/426e9e35d563ffe356e54bd0f970d153b8f25370\"\u003e\u003ccode\u003e426e9e3\u003c/code\u003e\u003c/a\u003e Bumped the version to 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/062ff0e0c33733f2148a5590d118a8570df846d5\"\u003e\u003ccode\u003e062ff0e\u003c/code\u003e\u003c/a\u003e Fixed the dependency on setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/086ff5d95d4dc550117c12647a4427d70bf8833d\"\u003e\u003ccode\u003e086ff5d\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/5807a83ead31f0de5303fa950ddea49d850d7355\"\u003e\u003ccode\u003e5807a83\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/093aced11439251e496b47a9a9369501075e8d1a\"\u003e\u003ccode\u003e093aced\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/e9ced7e63ad9502b3e2a3e3db5f5f1ccc16c5fd6\"\u003e\u003ccode\u003ee9ced7e\u003c/code\u003e\u003c/a\u003e Added license SPDX\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/b3e82ddc04e8d0c18c51eecb30b4a59aee5aac1d\"\u003e\u003ccode\u003eb3e82dd\u003c/code\u003e\u003c/a\u003e Fixed CHANGES.md [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/f1ce8da8522193421436c368849afe886666b4e5\"\u003e\u003ccode\u003ef1ce8da\u003c/code\u003e\u003c/a\u003e Doc fix [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/c924d7c6aa2e47a0627706c385101ff8d558d091\"\u003e\u003ccode\u003ec924d7c\u003c/code\u003e\u003c/a\u003e Updated supported versions [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/8b83e8cca35f5c773654ce4ae89b4e3f84f430d3\"\u003e\u003ccode\u003e8b83e8c\u003c/code\u003e\u003c/a\u003e Fixed CHANGES [ci skip]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/micheles/decorator/compare/5.2.1...5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.18.1 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jedi` from 0.19.2 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/davidhalter/jedi/blob/master/CHANGELOG.rst\"\u003ejedi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.20.0 (2026-05-02)\n+++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.14 support\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.8 and 3.9\u003c/li\u003e\n\u003cli\u003eUpgraded Typeshed\u003c/li\u003e\n\u003cli\u003eBetter support for Final/ClassVar\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e__new__\u003c/code\u003e is now also recognized as a signature and TypeVar inference\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003eSelf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003eTypeAlias\u003c/code\u003e, generics for \u003ccode\u003etype[...]\u003c/code\u003e and \u003ccode\u003etuple[...]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/3102215478fe07b965dcd8221c17436d1dd7e8ac\"\u003e\u003ccode\u003e3102215\u003c/code\u003e\u003c/a\u003e Move the type parameter syntax tests so that it works for all versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/1b37f2eb946e825cbc2887c6dd34ee046f0ae68c\"\u003e\u003ccode\u003e1b37f2e\u003c/code\u003e\u003c/a\u003e Prepare for the 0.20.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/8e4df5cc0ec511db1af6d358182b1fb7c1e0cbff\"\u003e\u003ccode\u003e8e4df5c\u003c/code\u003e\u003c/a\u003e Make sure the new generic syntax does not fail with latest parso\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/4c9dbcca0329454b638bfa32e2825bedcfdf0eac\"\u003e\u003ccode\u003e4c9dbcc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/davidhalter/jedi/issues/2098\"\u003e#2098\u003c/a\u003e from davidhalter/updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/fedb1a5eb0d74446f6d431db2920ab5f1e1d5b18\"\u003e\u003ccode\u003efedb1a5\u003c/code\u003e\u003c/a\u003e Fix 3.10 tests in one more case\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/87e782f9c82de7297e243a770ac8888570bffa8e\"\u003e\u003ccode\u003e87e782f\u003c/code\u003e\u003c/a\u003e Fix flake8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/cd52d982e10ac54f0ebef06e0bd414f79589998a\"\u003e\u003ccode\u003ecd52d98\u003c/code\u003e\u003c/a\u003e Fixes to get the tests passing for 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/d0b11806d4d1def377234bc2dc512992c997a977\"\u003e\u003ccode\u003ed0b1180\u003c/code\u003e\u003c/a\u003e Finally make tests work for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/8520a9958b489bd8d30cf20b4d2798f7289aab45\"\u003e\u003ccode\u003e8520a99\u003c/code\u003e\u003c/a\u003e Implement support for TypeVar inference for \u003cstrong\u003enew\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/55e5f0cb92dd92d5bdc80ecfc38664a1afd921d1\"\u003e\u003ccode\u003e55e5f0c\u003c/code\u003e\u003c/a\u003e Implement new-style unions with TypeVars\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/davidhalter/jedi/compare/v0.19.2...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib-inline` from 0.2.1 to 0.2.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/e6e197523ecfabfff1d976e5b6958c3ede948ccb\"\u003e\u003ccode\u003ee6e1975\u003c/code\u003e\u003c/a\u003e release 0.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/0aac2e223483ffbfb5a6076d8c2ca83545cca440\"\u003e\u003ccode\u003e0aac2e2\u003c/code\u003e\u003c/a\u003e Bump the actions group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/65\"\u003e#65\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/6eb2bd89dc8d4d6678478c6b2ec15be7b20d3374\"\u003e\u003ccode\u003e6eb2bd8\u003c/code\u003e\u003c/a\u003e Bump the actions group across 1 directory with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/631d7dd26be1287f64c5bd4bbb84888903e419b0\"\u003e\u003ccode\u003e631d7dd\u003c/code\u003e\u003c/a\u003e Zizmor hardening (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/66\"\u003e#66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/8d45c8fc427d39750751bdaa0ffe5abc8e30cd50\"\u003e\u003ccode\u003e8d45c8f\u003c/code\u003e\u003c/a\u003e Zizmor hardening\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/f830b37c728146dca4f947de6cbdb420ee9c69fb\"\u003e\u003ccode\u003ef830b37\u003c/code\u003e\u003c/a\u003e Specify BSD license and add license files (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/62\"\u003e#62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/e3b8bb10d275d5caa97d8d1b584d48797e494de4\"\u003e\u003ccode\u003ee3b8bb1\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 in CI pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/c783ae72ed581f24fa136f34e6df4f6e99c3f785\"\u003e\u003ccode\u003ec783ae7\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 in CI pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/8ac056c5730a6adbc9dd5e049b85163ba6a09a28\"\u003e\u003ccode\u003e8ac056c\u003c/code\u003e\u003c/a\u003e Update workflow to include matplotlib for tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/0cc8a2e91306c94e36f0a9cd8e31a38299b1c126\"\u003e\u003ccode\u003e0cc8a2e\u003c/code\u003e\u003c/a\u003e Use valid SPDX ID\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/matplotlib-inline/compare/0.2.1...0.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.0 to 26.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/26.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parso` from 0.8.6 to 0.8.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/davidhalter/parso/blob/master/CHANGELOG.rst\"\u003eparso's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.8.7 (2026-05-02)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd PEP 695 type parameter syntax\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/bfe30584415cde2e5a686512c2b109e1d06da3b6\"\u003e\u003ccode\u003ebfe3058\u003c/code\u003e\u003c/a\u003e Prepare the release 0.8.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/a36a4216a4e295141bc382e0a60a2074293e78cd\"\u003e\u003ccode\u003ea36a421\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/davidhalter/parso/issues/237\"\u003e#237\u003c/a\u003e from darki73/feat/pep695-type-params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/5b63e63911e399a742d37d221d192d46736a1c31\"\u003e\u003ccode\u003e5b63e63\u003c/code\u003e\u003c/a\u003e feat: PEP 695 type parameter syntax for Python 3.12+\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/davidhalter/parso/compare/v0.8.6...v0.8.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li...\n\n_Description has been truncated_","html_url":"https://github.com/cisco-en-programmability/catalystcentersdk/pull/32","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-en-programmability%2Fcatalystcentersdk/issues/32","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/32/packages"},{"uuid":"4616816099","node_id":"PR_kwDOPFo1N87kG1rg","number":228,"state":"open","title":":dependabot: uv(deps): Bump the all-uv group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-08T21:36:45.000Z","updated_at":"2026-06-08T21:39:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":":dependabot: uv(deps): Bump","group_name":"all-uv","update_count":4,"packages":[{"name":"boto3","old_version":"1.43.14","new_version":"1.43.25","repository_url":"https://github.com/boto/boto3"},{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"optuna","old_version":"4.8.0","new_version":"4.9.0","repository_url":"https://github.com/optuna/optuna"},{"name":"moto","old_version":"5.2.1","new_version":"5.2.2","repository_url":"https://github.com/getmoto/moto"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-uv group with 4 updates in the / directory: [boto3](https://github.com/boto/boto3), [snowballstemmer](https://github.com/snowballstem/snowball), [optuna](https://github.com/optuna/optuna) and [moto](https://github.com/getmoto/moto).\n\nUpdates `boto3` from 1.43.14 to 1.43.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7cb97d3726d5b1dde7f5e867da7252c73ebe8511\"\u003e\u003ccode\u003e7cb97d3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/100e4d14cc2ef5b728e3381210ff48cd08f56596\"\u003e\u003ccode\u003e100e4d1\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/74bfd8111fba157d760d47b0d56263210e9ad43a\"\u003e\u003ccode\u003e74bfd81\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b2b302b072044a376279adcb7a4791f424027ad1\"\u003e\u003ccode\u003eb2b302b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0622bb598bfed6eba5df0dc2908f2406f1d2b914\"\u003e\u003ccode\u003e0622bb5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/02fd3ca9aab5ae0e8e1e9e88e80b56e5a3e3755c\"\u003e\u003ccode\u003e02fd3ca\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fcaf9ff50cea0eff6ce965e97fc4b23c941d1cb5\"\u003e\u003ccode\u003efcaf9ff\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f2106e0d34cb87a89f066f06373d337da503b0d5\"\u003e\u003ccode\u003ef2106e0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5f983267ce19c9461f9da5ef19105b46879a440e\"\u003e\u003ccode\u003e5f98326\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d7e5b7c20dfad5465df92d55541638ecfc09e981\"\u003e\u003ccode\u003ed7e5b7c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.23\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.14...1.43.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.1.0 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `optuna` from 4.8.0 to 4.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/optuna/optuna/releases\"\u003eoptuna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.9.0\u003c/h2\u003e\n\u003cp\u003eThis is the release note of \u003ca href=\"https://github.com/optuna/optuna/milestone/74?closed=1\"\u003ev4.9.0\u003c/a\u003e.\u003c/p\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003ch3\u003eEnhance Multi-Objective Constrained Parallel Optimization in GPSampler\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/sawa3030\"\u003e\u003ccode\u003e@​sawa3030\u003c/code\u003e\u003c/a\u003e introduces parallelization enhancements to \u003ccode\u003eGPSampler\u003c/code\u003e, leveraging the \u003cstrong\u003eKriging Believer\u003c/strong\u003e approach for constrained and multi-objective optimization (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6481\"\u003e#6481\u003c/a\u003e). This improvement allows for more efficient exploration when multiple trials are running concurrently.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe GP surrogate is updated by assigning temporary objective function values ​​to the running trials.\u003c/p\u003e\n\u003cp\u003eFor more technical details and benchmarks, please check out our blog post: \u003ca href=\"https://medium.com/optuna/improving-optunas-gpsampler-parallelization-by-considering-running-trials-10d42aeb5d49\"\u003eImproving Optuna’s GPSampler Parallelization by Considering Running Trials\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eDeprecate Several Features\u003c/h3\u003e\n\u003cp\u003eThe following features are deprecated in v4.9.0 and scheduled for removal in v6.0.0.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eoptuna\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSeveral arguments in \u003ccode\u003eTPESampler\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6635\"\u003e#6635\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eprior_weight\u003c/code\u003e, \u003ccode\u003econsider_magic_clip\u003c/code\u003e, \u003ccode\u003econsider_endpoints\u003c/code\u003e, \u003ccode\u003egamma\u003c/code\u003e, \u003ccode\u003eweights\u003c/code\u003e, \u003ccode\u003ehyperopt_parameters\u003c/code\u003e: These internal parameters are being deprecated to simplify the interface, as the default settings are optimal for most use cases.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ewarn_independent_sampling\u003c/code\u003e: Deprecated because \u003ccode\u003eTPESampler\u003c/code\u003e now robustly supports both independent and joint sampling, making this warning obsolete.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecategorical_distance_func\u003c/code\u003e: This advanced feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ex0\u003c/code\u003e and \u003ccode\u003esigma0\u003c/code\u003e options in \u003ccode\u003eCmaEsSampler\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6624\"\u003e#6624\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThese options have been deprecated because they require a deep understanding of \u003ccode\u003eCmaEsSampler\u003c/code\u003e's internals to be configured effectively.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eoptuna.terminator\u003c/code\u003e module\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6668\"\u003e#6668\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eRetryFailedTrialCallback\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6670\"\u003e#6670\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis class has been renamed to \u003ccode\u003eRetryHeartbeatStaleTrialCallback\u003c/code\u003e to better reflect its behavior and avoid confusion with general trial retries (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6085\"\u003e#6085\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eoptuna.integration\u003c/code\u003e module\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eoptuna.integration\u003c/code\u003e module currently acts as a shortcut to the external \u003ccode\u003eoptuna_integration\u003c/code\u003e package for backward compatibility. Please import directly from the \u003ccode\u003eoptuna_integration\u003c/code\u003e package going forward.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eoptuna-integration\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePyCmaSampler\u003c/code\u003e: Please use Optuna's native \u003ccode\u003eCmaEsSampler\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCometCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMLflowCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTensorBoardCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTrackioCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWeightsAndBiasesCallback\u003c/code\u003e: This class has already been migrated to OptunaHub.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBreaking Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003ePyCmaSampler\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/276\"\u003eoptuna/optuna-integration#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation message for \u003ccode\u003eCometCallback\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/280\"\u003eoptuna/optuna-integration#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation message for MLflowCallback (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/281\"\u003eoptuna/optuna-integration#281\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/4db42e31c24b200e52595df9d4c00e2cdeefea2b\"\u003e\u003ccode\u003e4db42e3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6691\"\u003e#6691\u003c/a\u003e from c-bata/backport-v4.9-attestations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/6a15cf0906c5e92e9dbe70d3ee320eb3db5d08b7\"\u003e\u003ccode\u003e6a15cf0\u003c/code\u003e\u003c/a\u003e Add attestations: false to fix release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/a592e6c0d6604fa678201ecddbcc53a0d232cc65\"\u003e\u003ccode\u003ea592e6c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6684\"\u003e#6684\u003c/a\u003e from c-bata/bump-up-to-v4.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/490cfd6de52377acbec1d6f709b0189026575af2\"\u003e\u003ccode\u003e490cfd6\u003c/code\u003e\u003c/a\u003e Bump up to version number v4.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/6135d5469152a3f14a41202d2c065e823f3dd24c\"\u003e\u003ccode\u003e6135d54\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6651\"\u003e#6651\u003c/a\u003e from nabenabe0928/add-brute-force-info-to-grid-sampler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/c41ec2df70ba2c4957aa96f524733d1e488d9e85\"\u003e\u003ccode\u003ec41ec2d\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into add-brute-force-info-to-g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/f845a8fccfc0c6d64d419b27ab3076bb1b7caf32\"\u003e\u003ccode\u003ef845a8f\u003c/code\u003e\u003c/a\u003e Fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/574749e6a8ae2b93fc0a61908ad90da92495e8e5\"\u003e\u003ccode\u003e574749e\u003c/code\u003e\u003c/a\u003e Fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/af7fe8b01791a8ddbb368ce9e77d922296da30b1\"\u003e\u003ccode\u003eaf7fe8b\u003c/code\u003e\u003c/a\u003e Add note to best trial\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/b200bfbb312595c07d0e0c1265754096843091af\"\u003e\u003ccode\u003eb200bfb\u003c/code\u003e\u003c/a\u003e Update the NSGA-III doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/optuna/optuna/compare/v4.8.0...v4.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `moto` from 5.2.1 to 5.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getmoto/moto/blob/master/CHANGELOG.md\"\u003emoto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.2.2\u003c/h2\u003e\n\u003cp\u003eDocker Digest for 5.2.2: \u003cem\u003esha256:d8ae5edc2bf080e7e4c13f9bd4b29b53ac3b4427e92956318db3dbe23ec43eb7\u003c/em\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNew Methods:\n    * DS:\n        * disable_radius()\n        * enable_radius()\n\u003cpre\u003e\u003ccode\u003e* KinesisAnalyticsV2:\n    * untag_resource()\n\n* Logs:\n    * start_live_tail()\n\n* SESv2:\n    * update_contact()\n    * update_contact_list()\n\n* SWF:\n    * tag_resource()\n    * untag_resource()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eMiscellaneous:\u003cbr /\u003e\n* ACM: import_certificate() now accepts certificates without a CN\u003cbr /\u003e\n* ACM: request_certificate() now preserves the default options when not all are provided\u003cbr /\u003e\n* CloudFormation: Created Lambda resources now take the \u003ccode\u003euse_docker\u003c/code\u003e-configuration into account\u003cbr /\u003e\n* CloudFormation: update_stack_instances() now validates that a StackInstance exists\u003cbr /\u003e\n* Events: create_partner_event_source() now returns the EventSourceArn-attribute\u003cbr /\u003e\n* Route53: list_resource_record_sets() no longer returns a TTL for aliases\u003cbr /\u003e\n* S3: completed_multipart_upload() is now compatible with external tools like PyArrow\u003cbr /\u003e\n* S3: get_object() now supports all Response* headers\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/837595545cc4a4bb8fede2cff84b2b2373443981\"\u003e\u003ccode\u003e8375955\u003c/code\u003e\u003c/a\u003e Pre-Release: Up Version Number\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/325f8599bf7c9cdc3dfbf92ff911616e1955bb3f\"\u003e\u003ccode\u003e325f859\u003c/code\u003e\u003c/a\u003e Prepare release 5.2.2 (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10059\"\u003e#10059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/a3ced98f8ce0e57eab3d29925630708c5d0e654d\"\u003e\u003ccode\u003ea3ced98\u003c/code\u003e\u003c/a\u003e S3: get_object() now honors ResponseContentDisposition etc headers (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10057\"\u003e#10057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/d0cf348a92ded5e372380e47ca8f0ea1f43386bd\"\u003e\u003ccode\u003ed0cf348\u003c/code\u003e\u003c/a\u003e ACM: support certs without CN (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/9912\"\u003e#9912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/cbd409ae21d1537f958ffaa2d9a687fd0245c61b\"\u003e\u003ccode\u003ecbd409a\u003c/code\u003e\u003c/a\u003e Bump the go-deps group in /other_langs/tests_go with 6 updates (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10054\"\u003e#10054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/f47b7b19cdf1b5d511e395c2a7ddd4488c92ef21\"\u003e\u003ccode\u003ef47b7b1\u003c/code\u003e\u003c/a\u003e Bump the java-deps group in /other_langs/tests_java with 5 updates (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10053\"\u003e#10053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/33c406f384e8764642b7414e8272ac03c23d2603\"\u003e\u003ccode\u003e33c406f\u003c/code\u003e\u003c/a\u003e Bump ruby/setup-ruby from 1.306.0 to 1.310.0 (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10052\"\u003e#10052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/be0341c15c0a785ec5dec00270b3eeef40e61922\"\u003e\u003ccode\u003ebe0341c\u003c/code\u003e\u003c/a\u003e S3: fix CompleteMultipartUpload root level XML tag (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10056\"\u003e#10056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/0f171e36dc61aaf0a1f123f36c0fa635461af287\"\u003e\u003ccode\u003e0f171e3\u003c/code\u003e\u003c/a\u003e chore: update SSM default parameters (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10051\"\u003e#10051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/2329a6267b854c0824757739b0b46766ce0e277d\"\u003e\u003ccode\u003e2329a62\u003c/code\u003e\u003c/a\u003e chore: update EC2 Instance Offerings (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10048\"\u003e#10048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getmoto/moto/compare/5.2.1...5.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ministryofjustice/cica-review-case-documents-airflow/pull/228","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ministryofjustice%2Fcica-review-case-documents-airflow/issues/228","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/228/packages"},{"uuid":"4585174944","node_id":"PR_kwDOPfXSXM7ifpQ0","number":377,"state":"closed","title":"Bump snowballstemmer from 3.1.0 to 3.1.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-04T02:09:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-04T02:09:14.000Z","updated_at":"2026-06-04T02:09:35.000Z","time_to_close":13,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.1.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/gagan-chawla/aiohttp/pull/377","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gagan-chawla%2Faiohttp/issues/377","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/377/packages"},{"uuid":"4584059237","node_id":"PR_kwDOAjat187ib8yN","number":8190,"state":"open","title":"Bump snowballstemmer from 3.1.0 to 3.1.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-03T22:14:33.000Z","updated_at":"2026-06-03T22:28:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.1.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/microsoft/Qcodes/pull/8190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FQcodes/issues/8190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8190/packages"},{"uuid":"4584000717","node_id":"PR_kwDOKP9uoc7ibwSy","number":181,"state":"closed","title":"ci: Bump the ci group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["edgarrmondragon"],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-06-07T22:00:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T22:04:11.000Z","updated_at":"2026-06-07T22:01:06.000Z","time_to_close":345400,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"ci: Bump","group_name":"ci","update_count":11,"packages":[{"name":"tox","old_version":"4.50.3","new_version":"4.55.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"tox-uv","old_version":"1.33.4","new_version":"1.35.2","repository_url":"https://github.com/tox-dev/tox-uv"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"docutils","old_version":"0.22.4","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.15","new_version":"3.17","repository_url":"https://github.com/kjd/idna"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"mdit-py-plugins","old_version":"0.5.0","new_version":"0.6.1","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"5.0.0","new_version":"5.1.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.8.3","new_version":"2.8.4","repository_url":"https://github.com/facelessuser/soupsieve"}],"path":null,"ecosystem":"pip"},"body":"Bumps the ci group with 11 updates in the /requirements directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [tox](https://github.com/tox-dev/tox) | `4.50.3` | `4.55.0` |\n| [tox-uv](https://github.com/tox-dev/tox-uv) | `1.33.4` | `1.35.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.4` | `0.23` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.17` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.5.0` | `0.6.1` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `5.0.0` | `5.1.0` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.3` | `2.8.4` |\n\n\nUpdates `tox` from 4.50.3 to 4.55.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.55.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👷 ci(schemastore): sync fork before pushing branch by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3942\"\u003etox-dev/tox#3942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Also pass \u003ccode\u003eTERMINFO\u003c/code\u003e when in an interactive shell by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3946\"\u003etox-dev/tox#3946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): skip constrain_package_deps when constraints is set by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3948\"\u003etox-dev/tox#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.54.0...4.55.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.54.0...4.55.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.54.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(conftest): strip broken nspkg.pth files under py3.15 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3937\"\u003etox-dev/tox#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(packaging): declare tox.pytest deps via a testing extra by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3940\"\u003etox-dev/tox#3940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(schema): cover every replace form in the TOML schema by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3941\"\u003etox-dev/tox#3941\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.1...4.54.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.1...4.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(security): harden user-facing logs and untrusted inputs by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3924\"\u003etox-dev/tox#3924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(type): correct argparse override signatures for ty 0.0.33 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3932\"\u003etox-dev/tox#3932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: allow deps arrays in TOML schema by \u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.0...4.53.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.0...4.53.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(toml): allow bare range/labeled dicts in env_list by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3923\"\u003etox-dev/tox#3923\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.1...4.53.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.1...4.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003euse normalize_isa for architecture factor matching by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3919\"\u003etox-dev/tox#3919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): invalidate install cache on resolution env var changes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3921\"\u003etox-dev/tox#3921\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFeatures - 4.55.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically pass the TERMINFO environment variable to tox subprocesses if the output is a TTY. This variable is used\nby Ghostty to communicate terminal capabilities to programs. (:issue:\u003ccode\u003e3946\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.55.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eWhen the \u003ccode\u003econstraints\u003c/code\u003e configuration option is set, \u003ccode\u003econstrain_package_deps\u003c/code\u003e and \u003ccode\u003euse_frozen_constraints\u003c/code\u003e are\nnow ignored. Previously, both the user-provided constraints file and the auto-generated constraints file were passed\nto pip during \u003ccode\u003einstall_package_deps\u003c/code\u003e, which could cause resolver conflicts when the same package appeared in both\nfiles - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3945\u003c/code\u003e) (:issue:\u003ccode\u003e3945\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.54.0 (2026-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare the runtime dependencies of the \u003ccode\u003etox.pytest\u003c/code\u003e plugin (\u003ccode\u003epytest\u003c/code\u003e, \u003ccode\u003edevpi-process\u003c/code\u003e and \u003ccode\u003epytest-mock\u003c/code\u003e)\nunder a new \u003ccode\u003etesting\u003c/code\u003e extra, so plugin authors can pull them in via \u003ccode\u003etox[testing]\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\n(:issue:\u003ccode\u003e3938\u003c/code\u003e, :issue:\u003ccode\u003e3940\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExtend the generated TOML schema to cover every \u003ccode\u003ereplace\u003c/code\u003e table form (\u003ccode\u003eenv\u003c/code\u003e, \u003ccode\u003eref\u003c/code\u003e, \u003ccode\u003eposargs\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e,\n\u003ccode\u003eif\u003c/code\u003e), including conditional replacements used inside \u003ccode\u003ecommands\u003c/code\u003e. A guard test asserts the schema stays in sync\nwith the loader implementation so future replace types cannot be added without a corresponding schema entry.\n(:issue:\u003ccode\u003e3939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.1 (2026-05-02)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.53.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHardening pass on user-facing logging and config parsing:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMask secret-looking \u003ccode\u003e--key=value\u003c/code\u003e flag values in command logs (terminal warnings, \u003ccode\u003e.tox/\u0026lt;env\u0026gt;/log/*.log\u003c/code\u003e, and\n\u003ccode\u003eOutcome\u003c/code\u003e \u003ccode\u003e__repr__\u003c/code\u003e) using the same keyword regex previously applied to environment variable values.\u003c/li\u003e\n\u003cli\u003eResolve PEP 723 \u003ccode\u003escript\u003c/code\u003e paths and reject any that escape \u003ccode\u003etox_root\u003c/code\u003e; cap the script read at 5 MiB so a symlink\nto \u003ccode\u003e/dev/zero\u003c/code\u003e cannot exhaust memory.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e of a constructed \u003ccode\u003eLiteral[...]\u003c/code\u003e string in the CLI parser with a direct\n\u003ccode\u003eLiteral[tuple(action.choices)]\u003c/code\u003e subscript.\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003etimeout=30\u003c/code\u003e to \u003ccode\u003eurlopen\u003c/code\u003e when fetching a remote requirements file so a slow or unresponsive mirror cannot\nhang \u003ccode\u003etox\u003c/code\u003e indefinitely. (:issue:\u003ccode\u003e3924\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/928b7f06663aac5966b78375ef0d943e219e03d7\"\u003e\u003ccode\u003e928b7f0\u003c/code\u003e\u003c/a\u003e release 4.55.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/a43427fa389d4f3deaa462bebc86b81a0ab87e37\"\u003e\u003ccode\u003ea43427f\u003c/code\u003e\u003c/a\u003e 🐛 fix(pip): skip constrain_package_deps when constraints is set (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3948\"\u003e#3948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/27b68b39e6db707909311e654fcb6aa4d626cccf\"\u003e\u003ccode\u003e27b68b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3947\"\u003e#3947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4e6627ce0c06262760f83f77c9e989bb34c8f101\"\u003e\u003ccode\u003e4e6627c\u003c/code\u003e\u003c/a\u003e feat: Also pass \u003ccode\u003eTERMINFO\u003c/code\u003e when in an interactive shell (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3946\"\u003e#3946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/10c431cccae092446f61d1bf9483b00179724b2e\"\u003e\u003ccode\u003e10c431c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3943\"\u003e#3943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/c86e876399ca54055d54cc0dc4b21b87b910c9b5\"\u003e\u003ccode\u003ec86e876\u003c/code\u003e\u003c/a\u003e 👷 ci(schemastore): sync fork before pushing branch (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3942\"\u003e#3942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1f1fcc7a53665a827d8a304190696c6926ebb2eb\"\u003e\u003ccode\u003e1f1fcc7\u003c/code\u003e\u003c/a\u003e release 4.54.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/b35c8eedaf94906ed0e7938c7526dced550e6fa0\"\u003e\u003ccode\u003eb35c8ee\u003c/code\u003e\u003c/a\u003e 🐛 fix(schema): cover every replace form in the TOML schema (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3941\"\u003e#3941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/6eb5c4f5eec439b3924d6adb3d9d16ea7fc88a20\"\u003e\u003ccode\u003e6eb5c4f\u003c/code\u003e\u003c/a\u003e ✨ feat(packaging): declare tox.pytest deps via a testing extra (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3940\"\u003e#3940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1ad47ddaab21c891f136a9627d1c6cdb6ea655d7\"\u003e\u003ccode\u003e1ad47dd\u003c/code\u003e\u003c/a\u003e 🧪 test(conftest): strip broken nspkg.pth files under py3.15 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3937\"\u003e#3937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.50.3...4.55.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox-uv` from 1.33.4 to 1.35.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox-uv/releases\"\u003etox-uv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.35.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHonor constraints opt for all packages by \u003ca href=\"https://github.com/stephenfin\"\u003e\u003ccode\u003e@​stephenfin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/332\"\u003etox-dev/tox-uv#332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(lock): honor --recreate in uv-venv-lock-runner by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/338\"\u003etox-dev/tox-uv#338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stephenfin\"\u003e\u003ccode\u003e@​stephenfin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/332\"\u003etox-dev/tox-uv#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.35.1...1.35.2\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.35.1...1.35.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.35.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(lock-runner): respect UV_FROZEN env var and --frozen in uv_sync_flags by \u003ca href=\"https://github.com/alexholtz\"\u003e\u003ccode\u003e@​alexholtz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/327\"\u003etox-dev/tox-uv#327\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexholtz\"\u003e\u003ccode\u003e@​alexholtz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/327\"\u003etox-dev/tox-uv#327\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.35.0...1.35.1\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.35.0...1.35.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.35.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd machine and architecture handling to version spec by \u003ca href=\"https://github.com/griels\"\u003e\u003ccode\u003e@​griels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/321\"\u003etox-dev/tox-uv#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(installer): invalidate install cache on UV_* env var changes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/325\"\u003etox-dev/tox-uv#325\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/griels\"\u003e\u003ccode\u003e@​griels\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/321\"\u003etox-dev/tox-uv#321\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.34.0...1.35.0\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.34.0...1.35.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.34.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/317\"\u003etox-dev/tox-uv#317\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(runner): add PEP 723 inline script metadata support by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/319\"\u003etox-dev/tox-uv#319\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.33.4...1.34.0\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.33.4...1.34.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/595721d2a0c8695aeb9bb59e3042a79d2dff2b90\"\u003e\u003ccode\u003e595721d\u003c/code\u003e\u003c/a\u003e 🐛 fix(lock): honor --recreate in uv-venv-lock-runner (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/1026808b9d98b5c1f9d92e84b5cccfde23a01bed\"\u003e\u003ccode\u003e1026808\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/3f7ea4d7f0495f32d95a3b7f67ddc164b85b17bd\"\u003e\u003ccode\u003e3f7ea4d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/f976fc1a0548d4b4544a87e637c0fc31f6d14372\"\u003e\u003ccode\u003ef976fc1\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/c0fabe3f6c4627869552ae74a53721aaf998ce02\"\u003e\u003ccode\u003ec0fabe3\u003c/code\u003e\u003c/a\u003e Honor constraints opt for all packages (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/d4aa96d0a0583e08a45ccfc6f9a08f89425a38ea\"\u003e\u003ccode\u003ed4aa96d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/ac785195b51a3a1835702925d4150bba74134ccd\"\u003e\u003ccode\u003eac78519\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/8bab9b8484aefa61c220e38e36b497af0f590130\"\u003e\u003ccode\u003e8bab9b8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/328\"\u003e#328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/8b0497ed211589f363d7e477d3d426cca6a839f9\"\u003e\u003ccode\u003e8b0497e\u003c/code\u003e\u003c/a\u003e fix(lock-runner): respect UV_FROZEN env var and --frozen in uv_sync_flags (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/327\"\u003e#327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/ad30d57a18d72e2b908c388a85f6ebfa3a1a58a4\"\u003e\u003ccode\u003ead30d57\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/324\"\u003e#324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.33.4...1.35.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.4.22 to 2026.5.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.05.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.4 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.15 to 3.17\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\nas arguments or on standard input, with options to select A-label\nor U-label output and control error handling.\u003c/li\u003e\n\u003cli\u003eRaise the minimum supported Python version to 3.9\u003c/li\u003e\n\u003cli\u003eVarious code quality improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f48619c4cea6859b938d560fdd9feb898e678567\"\u003e\u003ccode\u003ef48619c\u003c/code\u003e\u003c/a\u003e Release 3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7421ba8003227f816142ab40178e3a7d204e6847\"\u003e\u003ccode\u003e7421ba8\u003c/code\u003e\u003c/a\u003e Pre-release 3.17rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/22ebb73b164081f209449b50162eb7ce086e96a4\"\u003e\u003ccode\u003e22ebb73\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/251\"\u003e#251\u003c/a\u003e from kjd/structure-optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2a7ac0a58c788d50112a5003af545a83807fb108\"\u003e\u003ccode\u003e2a7ac0a\u003c/code\u003e\u003c/a\u003e Drop redundant parallel-arrays comment from uts46data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/354eee9850a7b2962b65ae02010f7ebd9c99b7ed\"\u003e\u003ccode\u003e354eee9\u003c/code\u003e\u003c/a\u003e Apply ruff format to uts46data.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8c34ffcab603b4a7a727d4e286b1f3342813281d\"\u003e\u003ccode\u003e8c34ffc\u003c/code\u003e\u003c/a\u003e Refactor uts46data into parallel arrays\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1189629e8a319f7c2b4678b5716c180ebd97de03\"\u003e\u003ccode\u003e1189629\u003c/code\u003e\u003c/a\u003e Range-encode joining_types for compact representation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f90b87adc6b6b2a591dfc7fb3f8e47870dc81722\"\u003e\u003ccode\u003ef90b87a\u003c/code\u003e\u003c/a\u003e Generic length limit for functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ffd28be164dfbd3ebca8b3396e39d191f4909b\"\u003e\u003ccode\u003ed6ffd28\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/247\"\u003e#247\u003c/a\u003e from kjd/release-3.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6d1a0de52a8b4690f1b2a89829aa85ff1de3635a\"\u003e\u003ccode\u003e6d1a0de\u003c/code\u003e\u003c/a\u003e Release 3.16\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.15...v3.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-it-py` from 4.0.0 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emake_fence_rule()\u003c/code\u003e factory for configurable fence markers by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/394\"\u003eexecutablebooks/markdown-it-py#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 RELEASE v4.2.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/395\"\u003eexecutablebooks/markdown-it-py#395\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.1.0...v4.2.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v4.1.0...v4.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e--stdin\u003c/code\u003e option to CLI by \u003ca href=\"https://github.com/mcepl\"\u003e\u003ccode\u003e@​mcepl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/379\"\u003eexecutablebooks/markdown-it-py#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md and copilot-setup-steps workflow by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/380\"\u003eexecutablebooks/markdown-it-py#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add typing to Scanner by \u003ca href=\"https://github.com/Alunderin\"\u003e\u003ccode\u003e@​Alunderin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/382\"\u003eexecutablebooks/markdown-it-py#382\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Fix quadratic complexity in \u003ccode\u003efragments_join\u003c/code\u003e / \u003ccode\u003etext_join\u003c/code\u003e by \u003ca href=\"https://github.com/petricevich\"\u003e\u003ccode\u003e@​petricevich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/389\"\u003eexecutablebooks/markdown-it-py#389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨Allow plugins to register inline terminator characters by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/391\"\u003eexecutablebooks/markdown-it-py#391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003egfm-like2\u003c/code\u003e preset with task lists, alerts, and single-tilde strikethrough by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/388\"\u003eexecutablebooks/markdown-it-py#388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit hooks by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/392\"\u003eexecutablebooks/markdown-it-py#392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 RELEASE v4.1.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/393\"\u003eexecutablebooks/markdown-it-py#393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mcepl\"\u003e\u003ccode\u003e@​mcepl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/379\"\u003eexecutablebooks/markdown-it-py#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/380\"\u003eexecutablebooks/markdown-it-py#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Alunderin\"\u003e\u003ccode\u003e@​Alunderin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/382\"\u003eexecutablebooks/markdown-it-py#382\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petricevich\"\u003e\u003ccode\u003e@​petricevich\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/389\"\u003eexecutablebooks/markdown-it-py#389\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.0 - 2026-05-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emake_fence_rule()\u003c/code\u003e factory for configurable fence markers in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/394\"\u003e#394\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.0 - 2025-05-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003egfm-like2\u003c/code\u003e preset with task lists, alerts, and single-tilde strikethrough core plugins in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/388\"\u003e#388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Allow plugins to register inline terminator characters in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/391\"\u003e#391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Fix quadratic complexity in \u003ccode\u003efragments_join\u003c/code\u003e / \u003ccode\u003etext_join\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/389\"\u003e#389\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/petricevich\"\u003e\u003ccode\u003e@​petricevich\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Add \u003ccode\u003e--stdin\u003c/code\u003e option to CLI for reading Markdown from standard input in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/379\"\u003e#379\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/mcepl\"\u003e\u003ccode\u003e@​mcepl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add typing to Scanner in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/382\"\u003e#382\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/Alunderin\"\u003e\u003ccode\u003e@​Alunderin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/36c5f547144df2d01970a5792d68c71a3380b227\"\u003e\u003ccode\u003e36c5f54\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.2.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/96cf077ba5a6b3b4b2f862db7e0fc532694a72e9\"\u003e\u003ccode\u003e96cf077\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003emake_fence_rule()\u003c/code\u003e factory for configurable fence markers (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/394\"\u003e#394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/3b4ff6ddd368b679643d12debf09e10ef602d4db\"\u003e\u003ccode\u003e3b4ff6d\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/393\"\u003e#393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8951f267370b03a26ae88600a6dfc707ea290067\"\u003e\u003ccode\u003e8951f26\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit hooks (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/693bb24063b6c658d60c7c14203ac6470387e3c6\"\u003e\u003ccode\u003e693bb24\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003egfm-like2\u003c/code\u003e preset with task lists, alerts, and single-tilde strikethro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/df6fd361099cab7fe0259467c3aaa3f284ec8259\"\u003e\u003ccode\u003edf6fd36\u003c/code\u003e\u003c/a\u003e ✨Allow plugins to register inline terminator characters (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/d4ea0ca7f44e3ca86c18a87356502c59e5e49ec3\"\u003e\u003ccode\u003ed4ea0ca\u003c/code\u003e\u003c/a\u003e 👌 Fix quadratic complexity in \u003ccode\u003efragments_join\u003c/code\u003e / \u003ccode\u003etext_join\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/89331476e44c150bc32e2597a5fae4cd15391167\"\u003e\u003ccode\u003e8933147\u003c/code\u003e\u003c/a\u003e 🔧 Add typing to Scanner (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/2f6ae107ba32e9a7bd2d00134d09a78ec805a6a0\"\u003e\u003ccode\u003e2f6ae10\u003c/code\u003e\u003c/a\u003e 🔧 Add AGENTS.md and copilot-setup-steps workflow (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/49043e4445d233598fb893bed6949f7b25ae4e27\"\u003e\u003ccode\u003e49043e4\u003c/code\u003e\u003c/a\u003e Add --stdin option to CLI for reading Markdown from standard input (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mdit-py-plugins` from 0.5.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/releases\"\u003emdit-py-plugins's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/139\"\u003eexecutablebooks/mdit-py-plugins#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.1 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/140\"\u003eexecutablebooks/mdit-py-plugins#140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add AGENTS.md and copilot-setup-steps workflow by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ NEW: Add superscript plugin and tests by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add GFM autolink and composite GFM plugins by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/135\"\u003eexecutablebooks/mdit-py-plugins#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fix pre-commit by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/136\"\u003eexecutablebooks/mdit-py-plugins#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/137\"\u003eexecutablebooks/mdit-py-plugins#137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/blob/master/CHANGELOG.md\"\u003emdit-py-plugins's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.6.1 - 2026-05-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eField lists inside list items (or other indented containers) would recursively nest each field inside the previous one, instead of being siblings.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.6.0 - 2026-05-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003egfm_autolink\u003c/code\u003e plugin implements \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolink literals\u003c/a\u003e,\nauto-linking URLs and email addresses without requiring angle brackets:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003eVisit www.example.com or contact user@example.com\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe \u003ccode\u003egfm\u003c/code\u003e composite plugin enables a full Github Flavored Markdown (GFM)-like configuration in a single call\n(tables, strikethrough, autolinks, task lists, alerts, and footnotes).\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax\"\u003ethe GitHub docs\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRequires markdown-it-py \u0026gt;= 4.1.0.\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add superscript plugin and tests, thanks to \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003ePorted from \u003ca href=\"https://github.com/markdown-it/markdown-it-sup\"\u003emarkdown-it-sup\u003c/a\u003e.\nRenders superscript text using \u003ccode\u003e^..^\u003c/code\u003e syntax:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003e29^th^ of May\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/da70e05b7630c38047d1921ef21d1aadc34c1ea9\"\u003e\u003ccode\u003eda70e05\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.1 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/f41d88c17c90dac4f9fd77418e1dcc2ba2c4ea9b\"\u003e\u003ccode\u003ef41d88c\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b8735072c4a0d406ad29a87f472a638f6d4ac3f5\"\u003e\u003ccode\u003eb873507\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.0 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b77a18bcb3a8a640dbfc57dcb901fa18cee74bf8\"\u003e\u003ccode\u003eb77a18b\u003c/code\u003e\u003c/a\u003e 🔧 Fix pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/28a97783ee58785003bc9c84e0821bc3babb35a3\"\u003e\u003ccode\u003e28a9778\u003c/code\u003e\u003c/a\u003e ✨ Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/39c681fddac49430ee4a748433bcfae5888b7576\"\u003e\u003ccode\u003e39c681f\u003c/code\u003e\u003c/a\u003e ✨ NEW: Add superscript plugin and tests (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/62f00586e872e62a700fb13f65e254c686474fc6\"\u003e\u003ccode\u003e62f0058\u003c/code\u003e\u003c/a\u003e 🔧 Add AGENTS.md and copilot-setup-steps workflow (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 5.0.0 to 5.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003ch2\u003e✨ New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#alerts-github-style-callouts\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#gfm-autolinks\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#code-fences-using-colons\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e👌 Improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ccode\u003emyst_gfm_only\u003c/code\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1126\"\u003e#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1129\"\u003e#1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⬆️ Dependency Upgrades\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mb\"\u003e\u003ccode\u003e@​mb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1126\"\u003eexecutablebooks/MyST-Parser#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Bizordec\"\u003e\u003ccode\u003e@​Bizordec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1114\"\u003eexecutablebooks/MyST-Parser#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilia-kats\"\u003e\u003ccode\u003e@​ilia-kats\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1110\"\u003eexecutablebooks/MyST-Parser#1110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0 - 2026-05-13\u003c/h2\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/alerts\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/gfm-autolink\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/colon_fence\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👌 Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003e\u003ccode\u003emyst_gfm_only\u003c/code\u003e\u003c/a\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1110\"\u003egh-pr:1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1133\"\u003egh-pr:1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1114\"\u003egh-pr:1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1126\"\u003egh-pr:1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1129\"\u003egh-pr:1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1134\"\u003egh-pr:1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⬆️ Dependency Upgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1117\"\u003egh-pr:1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ev5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/2871eb95750873ccec2c4ab1dac0568815b64ca5\"\u003e\u003ccode\u003e2871eb9\u003c/code\u003e\u003c/a\u003e 🚀 Release v5.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1135\"\u003e#1135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cc5db37fd06445d7d023f7f2e0c2c073730be9cf\"\u003e\u003ccode\u003ecc5db37\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Pin mdit-py-plugins\u0026gt;=0.6.1 for nested field list fix (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/4ce57f94af31de53c8790ccfffa3107c64241d0d\"\u003e\u003ccode\u003e4ce57f9\u003c/code\u003e\u003c/a\u003e 👌 Stop directive-option parsing at colon fences (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cfcc3278f9e8c7508aae4cea82f1dd9c5c111183\"\u003e\u003ccode\u003ecfcc327\u003c/code\u003e\u003c/a\u003e ⬆️ Bump mypy from 2.0.0 to 2.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1131\"\u003e#1131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/691738c3d897f82577440e18079d8b990edb8e34\"\u003e\u003ccode\u003e691738c\u003c/code\u003e\u003c/a\u003e ⬆️ Bump ruff from 0.15.10 to 0.15.12 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1132\"\u003e#1132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/0fb1ae983d7b0df68bd02a9f77b0bc45057edbaf\"\u003e\u003ccode\u003e0fb1ae9\u003c/code\u003e\u003c/a\u003e 👌 IMPROVE: MathJax 4 compatibility (Sphinx 9) (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f153b4b8ae68cbe77b41942147cf5cb6464168f0\"\u003e\u003ccode\u003ef153b4b\u003c/code\u003e\u003c/a\u003e ⬆️ Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/93acf8dae502aba484b14a1d291366fc21f839e6\"\u003e\u003ccode\u003e93acf8d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1095\"\u003e#1095\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/a5f1d6963bc3ee361d25309a24ccc42e6860fd54\"\u003e\u003ccode\u003ea5f1d69\u003c/code\u003e\u003c/a\u003e ⬆️ Update pygments requirement from \u0026lt;2.20 to \u0026lt;2.21 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/838129687219517e31a395736397c957d93532dd\"\u003e\u003ccode\u003e8381296\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Use docname instead of source path in warning locations (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.8.3 to 2.8.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix another inefficient attribute pattern (\u003ca href=\"https://github.com/mauriceng98\"\u003e\u003ccode\u003e@​mauriceng98\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Limit total number of selectors processed in a pattern to prevent massive selector requests (\u003ca href=\"https://github.com/mauriceng98\"\u003e\u003ccode\u003e@​mauriceng98\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/28108ab805818c832d9568142a99844fd95a0d39\"\u003e\u003ccode\u003e28108ab\u003c/code\u003e\u003c/a\u003e Limit excessive selectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/ef188721d6cc95641e99297b3a26ac17b7dfcfa7\"\u003e\u003ccode\u003eef18872\u003c/code\u003e\u003c/a\u003e Fix test for Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/eb4397618709186c109400448c6043b728217dc3\"\u003e\u003ccode\u003eeb43976\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/3a661b23b20e92b49b4683f0227c26c9d765267f\"\u003e\u003ccode\u003e3a661b2\u003c/code\u003e\u003c/a\u003e Fix typo in pseudo-classes.md (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/0cb533d83bfc445c7c6321742a21f612305fc8ba\"\u003e\u003ccode\u003e0cb533d\u003c/code\u003e\u003c/a\u003e Update hatchling version requirement in pyproject.toml (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.8.3...2.8.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/edgarrmondragon/pep610/pull/181","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgarrmondragon%2Fpep610/issues/181","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/181/packages"},{"uuid":"4577142746","node_id":"PR_kwDORuOgZM7iFEm4","number":110,"state":"closed","title":"Bump snowballstemmer from 3.1.0 to 3.1.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-03T05:26:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T05:26:45.000Z","updated_at":"2026-06-03T05:27:03.000Z","time_to_close":10,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.1.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/nmurrell07/aiohttp/pull/110","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmurrell07%2Faiohttp/issues/110","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/110/packages"},{"uuid":"4556364594","node_id":"PR_kwDONf3zs87hCJcS","number":151,"state":"open","title":"chore(deps-dev): bump snowballstemmer from 3.0.1 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-31T02:43:32.000Z","updated_at":"2026-05-31T02:55:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.0.1 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.0.1\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/antonioterpin/pinet/pull/151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/antonioterpin%2Fpinet/issues/151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/151/packages"},{"uuid":"4518013716","node_id":"PR_kwDOFKxbkM7fGCAa","number":2008,"state":"closed","title":"chore(deps): bump snowballstemmer from 3.0.1 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-26T00:43:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-25T15:36:54.000Z","updated_at":"2026-05-26T00:43:26.000Z","time_to_close":32790,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nBumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.0.1 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=uv\u0026previous-version=3.0.1\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/sailfishos-mirror/cryptography/pull/2008","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fcryptography/issues/2008","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2008/packages"},{"uuid":"4514683723","node_id":"PR_kwDOAjat187e7O2p","number":8167,"state":"open","title":"Bump snowballstemmer from 3.0.1 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-25T06:07:57.000Z","updated_at":"2026-05-25T06:19:10.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.0.1 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.0.1\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/microsoft/Qcodes/pull/8167","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FQcodes/issues/8167","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8167/packages"},{"uuid":"4183803259","node_id":"PR_kwDOIGWWtM7PIRyf","number":9,"state":"closed","title":"Bump the llvm-docs-requirements group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-24T07:10:16.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-01T03:33:38.000Z","updated_at":"2026-04-24T07:10:19.000Z","time_to_close":2000198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":30,"packages":[{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"furo","old_version":"2024.1.29","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"2.0.0","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"packaging","old_version":"23.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.2.6","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-automodapi","old_version":"0.17.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinx-reredirects","old_version":"0.1.2","new_version":"1.1.0","repository_url":"https://github.com/documatt/sphinx-reredirects"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.8","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group with 30 updates in the /llvm/docs directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.18.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2026.2.25` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.6` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.1.29` | `2025.12.19` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10.2` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `5.0.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `26.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.20.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.33.1` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.2.6` | `9.1.0` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.17.0` | `0.22.0` |\n| [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) | `0.1.2` | `1.1.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.8` | `2.0.0` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.3` |\n\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.14.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.12.2 to 4.14.3\n\nUpdates `certifi` from 2023.11.17 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2023.11.17...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.3.2 to 3.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5478b84058a2a04e2d67a5dabbe0a273706707aa\"\u003e\u003ccode\u003e5478b84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/715\"\u003e#715\u003c/a\u003e from jawah/release-3.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5c0a09e2caf1b3977df691916e949e1de4b8a738\"\u003e\u003ccode\u003e5c0a09e\u003c/code\u003e\u003c/a\u003e :heavy_check_mark: add confidence for threading usage, mostly due to lru_cach...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef826b28d9f21e0059c93acc69a8bf364126c179\"\u003e\u003ccode\u003eef826b2\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5564f1aebe56584150a988f565ff69ee316dcefe\"\u003e\u003ccode\u003e5564f1a\u003c/code\u003e\u003c/a\u003e :pencil: update docs accordingly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f2cf7d86e7c3ef4b77790a754b048bfada4fd09\"\u003e\u003ccode\u003e0f2cf7d\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/54a189446becf4f2b42772f0dce89a5ef79fe8cc\"\u003e\u003ccode\u003e54a1894\u003c/code\u003e\u003c/a\u003e :bug: fix --normalize writing to wrong path with multiple files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2177e28828bb7fcc2f1bed2a2d4463161a180812\"\u003e\u003ccode\u003e2177e28\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b2497a54ba545dae84be01649d66fd52a7fcfc2d\"\u003e\u003ccode\u003eb2497a5\u003c/code\u003e\u003c/a\u003e :bug: edge case where noise difference between two candidates can be almost i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/13a5d0b471cfb9b60b8cda84c78b7874c0267123\"\u003e\u003ccode\u003e13a5d0b\u003c/code\u003e\u003c/a\u003e :wrench: upgrade ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b9ffbd4e8314b0f733ddb34eef32d80490eb947c\"\u003e\u003ccode\u003eb9ffbd4\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14t nox mypyc session\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.3.2...3.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.1.29 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.01.29...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.6 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.7\"\u003ehttps://github.com/kjd/idna/compare/v3.6...v3.7\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.10 (2024-09-15)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReverted to Unicode 15.1.0 data. Unicode 16 has some significant changes\nto UTS46 processing that will require more work to properly implement.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.9 (2024-09-13)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0\u003c/li\u003e\n\u003cli\u003eDeprecate setup.cfg in favour of pyproject.toml\u003c/li\u003e\n\u003cli\u003eUse ruff for code formatting\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Waket Zheng for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.8 (2024-08-23)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for\ncertain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no\nlonger testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.7 (2024-04-11)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could\ntake exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.5.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for...\n\n_Description has been truncated_","html_url":"https://github.com/openeuler-mirror/llvm-project/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openeuler-mirror%2Fllvm-project/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"},{"uuid":"4161115662","node_id":"PR_kwDORzFs-c7OS88R","number":2,"state":"closed","title":"Bump the llvm-docs-requirements group in /llvm/docs with 29 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-28T18:36:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-28T18:00:17.000Z","updated_at":"2026-03-28T18:36:32.000Z","time_to_close":2167,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":29,"packages":[{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"furo","old_version":"2023.8.19","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"2.0.0","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"packaging","old_version":"23.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.33.0","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.1.2","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-automodapi","old_version":"0.16.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.4","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"}],"path":"/llvm/docs","ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group in /llvm/docs with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.18.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2026.2.25` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.6` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [furo](https://github.com/pradyunsg/furo) | `2023.8.19` | `2025.12.19` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10.2` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `5.0.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `26.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.33.0` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.1.2` | `9.1.0` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.16.0` | `0.22.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.4` | `2.0.0` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.3` |\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.14.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.12.2 to 4.14.3\n\nUpdates `certifi` from 2023.11.17 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2023.11.17...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.3.2 to 3.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5478b84058a2a04e2d67a5dabbe0a273706707aa\"\u003e\u003ccode\u003e5478b84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/715\"\u003e#715\u003c/a\u003e from jawah/release-3.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5c0a09e2caf1b3977df691916e949e1de4b8a738\"\u003e\u003ccode\u003e5c0a09e\u003c/code\u003e\u003c/a\u003e :heavy_check_mark: add confidence for threading usage, mostly due to lru_cach...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef826b28d9f21e0059c93acc69a8bf364126c179\"\u003e\u003ccode\u003eef826b2\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5564f1aebe56584150a988f565ff69ee316dcefe\"\u003e\u003ccode\u003e5564f1a\u003c/code\u003e\u003c/a\u003e :pencil: update docs accordingly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f2cf7d86e7c3ef4b77790a754b048bfada4fd09\"\u003e\u003ccode\u003e0f2cf7d\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/54a189446becf4f2b42772f0dce89a5ef79fe8cc\"\u003e\u003ccode\u003e54a1894\u003c/code\u003e\u003c/a\u003e :bug: fix --normalize writing to wrong path with multiple files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2177e28828bb7fcc2f1bed2a2d4463161a180812\"\u003e\u003ccode\u003e2177e28\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b2497a54ba545dae84be01649d66fd52a7fcfc2d\"\u003e\u003ccode\u003eb2497a5\u003c/code\u003e\u003c/a\u003e :bug: edge case where noise difference between two candidates can be almost i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/13a5d0b471cfb9b60b8cda84c78b7874c0267123\"\u003e\u003ccode\u003e13a5d0b\u003c/code\u003e\u003c/a\u003e :wrench: upgrade ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b9ffbd4e8314b0f733ddb34eef32d80490eb947c\"\u003e\u003ccode\u003eb9ffbd4\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14t nox mypyc session\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.3.2...3.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2023.8.19 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2023.08.19...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.6 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.7\"\u003ehttps://github.com/kjd/idna/compare/v3.6...v3.7\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.10 (2024-09-15)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReverted to Unicode 15.1.0 data. Unicode 16 has some significant changes\nto UTS46 processing that will require more work to properly implement.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.9 (2024-09-13)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0\u003c/li\u003e\n\u003cli\u003eDeprecate setup.cfg in favour of pyproject.toml\u003c/li\u003e\n\u003cli\u003eUse ruff for code formatting\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Waket Zheng for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.8 (2024-08-23)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for\ncertain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no\nlonger testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.7 (2024-04-11)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could\ntake exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.5.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/org-rex/llvm-project-6Mfiles_Restore_at_2026-03-28_10-35-15_UTC/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/org-rex%2Fllvm-project-6Mfiles_Restore_at_2026-03-28_10-35-15_UTC/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"},{"uuid":"3882060189","node_id":"PR_kwDOHFxNx87At1N7","number":1225,"state":"open","title":"chore(deps): bump snowballstemmer from 2.2.0 to 3.0.1 in /sdk/python","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-01T13:42:51.000Z","updated_at":"2026-02-01T13:42:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":"/sdk/python","ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 2.2.0 to 3.0.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/master/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.0.1 (2025-05-09)\u003c/h1\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003cstrong\u003einit\u003c/strong\u003e.py in 3.0.0 was incorrectly generated due to a missing\nbuild dependency and the list of algorithms was empty.  First reported by\nlaymonage.  Thanks to Dmitry Shachnev, Henry Schreiner and Adam Turner for\ndiagnosing and fixing.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/230\"\u003e#230\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/231\"\u003e#231\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd trove classifiers for Armenian and Yiddish which have now been registered\nwith PyPI.  Thanks to Henry Schreiner and Dmitry Shachnev.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/228\"\u003e#228\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate documented details of Python 2 support in old versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eSnowball 3.0.0 (2025-05-08)\u003c/h1\u003e\n\u003ch2\u003eAda\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid Ada code generated for Snowball \u003ccode\u003eloop\u003c/code\u003e (it was partly Pascal!)\nNone of the stemmers shipped in previous releases triggered this bug, but\nthe Turkish stemmer now does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe Ada runtime was not tracking the current length of the string\nbut instead used the current limit value or some other substitute, which\nmanifested as various incorrect behaviours for code inside of \u003ccode\u003esetlimit\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esize\u003c/code\u003e was incorrectly returning the difference between the limit and the\nbackwards limit.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003elenof\u003c/code\u003e or \u003ccode\u003esizeof\u003c/code\u003e on a string variable generated Ada code that didn't\neven compile.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix incorrect preconditions on some methods in the runtime.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug in runtime code used by \u003ccode\u003eattach\u003c/code\u003e, \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string\nvariable assignment when a (sub)string was replaced with a larger string.\nThis bug was triggered by code in the Kraaij-Pohlmann Dutch stemmer\nimplementation (which was previously not enabled by default but is now the\nstandard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid code generated for \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string variable\nassignment.  This bug was triggered by code in the Kraaij-Pohlmann\nDutch stemmer implementation (which was previously not enabled by default\nbut is now the standard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/e4b3efb449ccb994d39230eb6e8440d267471f4a\"\u003e\u003ccode\u003ee4b3efb\u003c/code\u003e\u003c/a\u003e Update for 3.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/bbd3319b7f46c8e82f6f96b2e7969bae7b4fba04\"\u003e\u003ccode\u003ebbd3319\u003c/code\u003e\u003c/a\u003e Protect empty languages dict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/298ff9fcc930fb6fae6bcc8c80eec74f8f73134c\"\u003e\u003ccode\u003e298ff9f\u003c/code\u003e\u003c/a\u003e Update details of Python 2 support in old versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/53fe098738ecb029e943804ad6cec442e54801a8\"\u003e\u003ccode\u003e53fe098\u003c/code\u003e\u003c/a\u003e python: Specify correct dependencies for \u003ccode\u003e$(python_output_dir)/__init__.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/00a22def0924d06bb96dcffd728ae875b61d6613\"\u003e\u003ccode\u003e00a22de\u003c/code\u003e\u003c/a\u003e Stop excluding classifiers for Armenian and Yiddish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/abd9adc758f5ba7f5db567d70a61e0929b69c3c1\"\u003e\u003ccode\u003eabd9adc\u003c/code\u003e\u003c/a\u003e Update for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/d23d3561f48a505236fd8a89748286a80050b03d\"\u003e\u003ccode\u003ed23d356\u003c/code\u003e\u003c/a\u003e Back out incomplete ESM support for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/ff42274e2247c475d9f42993ef307228949d5507\"\u003e\u003ccode\u003eff42274\u003c/code\u003e\u003c/a\u003e Update draft NEWS entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd61f01a4e04c7a79b91a3cc2a42b6ffa144a99b\"\u003e\u003ccode\u003ecd61f01\u003c/code\u003e\u003c/a\u003e tamil: remove_tense_suffix signals if ending removed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/edfe5763ed779aa1622eecd599029ecfb3ddb7aa\"\u003e\u003ccode\u003eedfe576\u003c/code\u003e\u003c/a\u003e nepali: Reformat amongs to be clearer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v2.2.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=2.2.0\u0026new-version=3.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/slumbering/dagger/pull/1225","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/slumbering%2Fdagger/issues/1225","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1225/packages"},{"uuid":"3852512447","node_id":"PR_kwDOHR9vV86_Miyr","number":503,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 107 updates","user":"dependabot[bot]","labels":["skip-changelog","major","chore"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T03:57:14.000Z","updated_at":"2026-02-12T14:02:23.388Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":107,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiohappyeyeballs","old_version":"2.4.0","new_version":"2.6.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"aioitertools","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/omnilib/aioitertools"},{"name":"aiokafka","old_version":"0.11.0","new_version":"0.12.0","repository_url":"https://github.com/aio-libs/aiokafka"},{"name":"aiosignal","old_version":"1.3.1","new_version":"1.4.0","repository_url":"https://github.com/aio-libs/aiosignal"},{"name":"ansible-builder","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/ansible/ansible-builder"},{"name":"ansible-compat","old_version":"24.8.0","new_version":"24.10.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"ansible-pygments","old_version":"0.1.1","new_version":"0.1.2","repository_url":"https://github.com/ansible-community/ansible-pygments"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"antsibull-changelog","old_version":"0.29.0","new_version":"0.35.0","repository_url":"https://github.com/ansible-community/antsibull-changelog"},{"name":"antsibull-core","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ansible-community/antsibull-core"},{"name":"antsibull-docs","old_version":"2.13.1","new_version":"2.24.0","repository_url":"https://github.com/ansible-community/antsibull-docs"},{"name":"antsibull-docs-parser","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/ansible-community/antsibull-docs-parser"},{"name":"async-timeout","old_version":"4.0.3","new_version":"5.0.1","repository_url":"https://github.com/aio-libs/async-timeout"},{"name":"azure-core","old_version":"1.30.2","new_version":"1.38.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"babel","old_version":"2.16.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bindep","old_version":"2.11.0","new_version":"2.13.0"},{"name":"black","old_version":"24.8.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"botocore","old_version":"1.35.7","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"bracex","old_version":"2.5","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"build","old_version":"1.2.1","new_version":"1.4.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2024.8.30","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.0","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"43.0.1","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"drools-jpy","old_version":"0.3.9","new_version":"0.3.14","repository_url":"https://github.com/ansible/drools_jpy"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.15.4","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"frozenlist","old_version":"1.4.1","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"galaxy-importer","old_version":"0.4.24","new_version":"0.4.37","repository_url":"https://github.com/ansible/galaxy-importer"},{"name":"gitdb","old_version":"4.0.11","new_version":"4.0.12","repository_url":"https://github.com/gitpython-developers/gitdb"},{"name":"gitpython","old_version":"3.1.43","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.8","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"6.2.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isodate","old_version":"0.6.1","new_version":"0.7.2","repository_url":"https://github.com/gweis/isodate"},{"name":"janus","old_version":"1.0.0","new_version":"2.0.0","repository_url":"https://github.com/aio-libs/janus"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.0.2","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"jpy","old_version":"0.18.0","new_version":"1.3.0","repository_url":"https://github.com/jpy-consortium/jpy"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2023.12.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"keyring","old_version":"25.3.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markdown","old_version":"3.7","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"2.1.5","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"mock","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"more-itertools","old_version":"10.4.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"multidict","old_version":"6.0.5","new_version":"6.7.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"nh3","old_version":"0.2.18","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.1","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.0","new_version":"7.0.3"},{"name":"perky","old_version":"0.9.2","new_version":"0.9.3","repository_url":"https://github.com/larryhastings/perky"},{"name":"pip","old_version":"24.2","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"pkginfo","old_version":"1.10.0","new_version":"1.12.1.2"},{"name":"platformdirs","old_version":"4.2.2","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"psycopg","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-pool","old_version":"3.2.2","new_version":"3.2.8","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pycodestyle","old_version":"2.11.1","new_version":"2.14.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.20.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyflakes","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/PyCQA/pyflakes"},{"name":"pygments","old_version":"2.18.0","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyproject-api","old_version":"1.7.1","new_version":"1.9.1","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pyproject-hooks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"python-daemon","old_version":"3.0.1","new_version":"3.1.2"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"readme-renderer","old_version":"43.0","new_version":"44.0","repository_url":"https://github.com/pypa/readme_renderer"},{"name":"referencing","old_version":"0.35.1","new_version":"0.36.2","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.8.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.20.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"rstcheck","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/rstcheck/rstcheck"},{"name":"rstcheck-core","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/rstcheck/rstcheck-core"},{"name":"ruamel-yaml","old_version":"0.18.6","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.8","new_version":"0.2.15"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smmap","old_version":"5.0.1","new_version":"5.0.2","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"sphinx-ansible-theme","old_version":"0.10.3","new_version":"0.10.4","repository_url":"https://github.com/ansible-community/sphinx_ansible_theme"},{"name":"sphinx-rtd-theme","old_version":"2.0.0","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"twine","old_version":"5.1.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typer","old_version":"0.12.5","new_version":"0.21.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typer-config","old_version":"1.4.0","new_version":"1.4.2","repository_url":"https://github.com/maxb2/typer-config"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"1.26.20","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"20.26.3","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcmatch","old_version":"9.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"websockets","old_version":"13.0.1","new_version":"15.0.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"1.16.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yamllint","old_version":"1.35.1","new_version":"1.37.1","repository_url":"https://github.com/adrienverge/yamllint"},{"name":"yarl","old_version":"1.9.8","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.1","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 107 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.4.0` | `2.6.1` |\n| [aioitertools](https://github.com/omnilib/aioitertools) | `0.12.0` | `0.13.0` |\n| [aiokafka](https://github.com/aio-libs/aiokafka) | `0.11.0` | `0.12.0` |\n| [aiosignal](https://github.com/aio-libs/aiosignal) | `1.3.1` | `1.4.0` |\n| [ansible-builder](https://github.com/ansible/ansible-builder) | `3.1.0` | `3.1.1` |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.8.0` | `24.10.0` |\n| [ansible-pygments](https://github.com/ansible-community/ansible-pygments) | `0.1.1` | `0.1.2` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [antsibull-changelog](https://github.com/ansible-community/antsibull-changelog) | `0.29.0` | `0.35.0` |\n| [antsibull-core](https://github.com/ansible-community/antsibull-core) | `3.0.2` | `3.5.0` |\n| [antsibull-docs](https://github.com/ansible-community/antsibull-docs) | `2.13.1` | `2.24.0` |\n| [antsibull-docs-parser](https://github.com/ansible-community/antsibull-docs-parser) | `1.1.0` | `1.2.2` |\n| [async-timeout](https://github.com/aio-libs/async-timeout) | `4.0.3` | `5.0.1` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.30.2` | `1.38.0` |\n| [babel](https://github.com/python-babel/babel) | `2.16.0` | `2.17.0` |\n| bindep | `2.11.0` | `2.13.0` |\n| [black](https://github.com/psf/black) | `24.8.0` | `25.11.0` |\n| [botocore](https://github.com/boto/botocore) | `1.35.7` | `1.42.34` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5` | `2.6` |\n| [build](https://github.com/pypa/build) | `1.2.1` | `1.4.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.0` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.1.8` |\n| [cryptography](https://github.com/pyca/cryptography) | `43.0.1` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [drools-jpy](https://github.com/ansible/drools_jpy) | `0.3.9` | `0.3.14` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.15.4` | `3.19.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.4.1` | `1.8.0` |\n| [galaxy-importer](https://github.com/ansible/galaxy-importer) | `0.4.24` | `0.4.37` |\n| [gitdb](https://github.com/gitpython-developers/gitdb) | `4.0.11` | `4.0.12` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.43` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.8` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `6.2.1` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.1.0` |\n| [isodate](https://github.com/gweis/isodate) | `0.6.1` | `0.7.2` |\n| [janus](https://github.com/aio-libs/janus) | `1.0.0` | `2.0.0` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.0.2` | `4.4.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [jpy](https://github.com/jpy-consortium/jpy) | `0.18.0` | `1.3.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2023.12.1` | `2025.9.1` |\n| [keyring](https://github.com/jaraco/keyring) | `25.3.0` | `25.7.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.5` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.1` | `0.4.2` |\n| [mock](https://github.com/testing-cabal/mock) | `5.1.0` | `5.2.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.4.0` | `10.8.0` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.0.5` | `6.7.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.18` | `0.3.2` |\n| [packaging](https://github.com/pypa/packaging) | `24.1` | `26.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.0` | `7.0.3` |\n| [perky](https://github.com/larryhastings/perky) | `0.9.2` | `0.9.3` |\n| [pip](https://github.com/pypa/pip) | `24.2` | `25.3` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.10.0` | `1.12.1.2` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.4.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-pool](https://github.com/psycopg/psycopg) | `3.2.2` | `3.2.8` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.11.1` | `2.14.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.20.1` | `2.41.5` |\n| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.1.0` | `3.4.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.19.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.2` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.7.1` | `1.9.1` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.1.0` | `1.2.0` |\n| python-daemon | `3.0.1` | `3.1.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [readme-renderer](https://github.com/pypa/readme_renderer) | `43.0` | `44.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.36.2` |\n| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.8.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.0` | `0.27.1` |\n| [rstcheck](https://github.com/rstcheck/rstcheck) | `6.2.4` | `6.2.5` |\n| [rstcheck-core](https://github.com/rstcheck/rstcheck-core) | `1.2.1` | `1.2.2` |\n| ruamel-yaml | `0.18.6` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.8` | `0.2.15` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.1` | `5.0.2` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [sphinx-ansible-theme](https://github.com/ansible-community/sphinx_ansible_theme) | `0.10.3` | `0.10.4` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `2.0.0` | `3.1.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.0` |\n| [twine](https://github.com/pypa/twine) | `5.1.1` | `6.2.0` |\n| [typer](https://github.com/fastapi/typer) | `0.12.5` | `0.21.1` |\n| [typer-config](https://github.com/maxb2/typer-config) | `1.4.0` | `1.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `1.26.20` | `2.6.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.26.3` | `20.36.1` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `9.0` | `10.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `13.0.1` | `15.0.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [yamllint](https://github.com/adrienverge/yamllint) | `1.35.1` | `1.37.1` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.9.8` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.1` | `3.23.0` |\n\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#221\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.4.0 to 2.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/151\"\u003e#151\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.0...v2.6.1\"\u003ev2.6.0...v2.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/149\"\u003e#149\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCreates an api_reference.rst file to expose the existing documentation for the few functions that have docstrings, as well as add documentation for AddrInfoType and SocketFactoryType. Now, these can be properly pointed to by other projects' documentation.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.5.0...v2.6.0\"\u003ev2.5.0...v2.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/147\"\u003e#147\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Kieren \u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.8...v2.5.0\"\u003ev2.4.8...v2.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/143\"\u003e#143\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe first attempt to fix this was to use the cpython staggered race updates in \u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/142\"\u003e#142\u003c/a\u003e but there is still a race there where there can be multiple winners. Instead we now accept that we will not be able to cancel all coros in time and there will always be a risk of multiple winners. We store all sockets in a set that were not already cleaned up and we close all but the first winner after the staggered race finishes.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.7...v2.4.8\"\u003ev2.4.7...v2.4.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve typeerror on import for python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePublish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve warnings when running tests (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/144\"\u003e#144\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e96264aec89b9bd34d37413f610d039c56393a48\"\u003e\u003ccode\u003ee96264a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure all timers are cancelled when after staggered race finishes (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/136\"\u003e#136\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/f75891d8974693b24af9789a8981ed7f6bc55c5c\"\u003e\u003ccode\u003ef75891d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep classifiers in project to avoid automatic enrichment (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/134\"\u003e#134\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/99edb20e9d3e53ead65b55cb3e93c22c03d06599\"\u003e\u003ccode\u003e99edb20\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove classifiers to prevent recalculation by poetry (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/131\"\u003e#131\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/66e1c90ae81f71c7039cd62c60417a96202d906c\"\u003e\u003ccode\u003e66e1c90\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4 (2024-11-30)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle oserror on failure to close socket instead of raising indexerror (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/114\"\u003e#114\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c542f684d329fed04093caa2b31d8f7f6e0e0949\"\u003e\u003ccode\u003ec542f68\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3 (2024-09-30)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e3bd5bdf44f5d187802de6dcb08d27e1ca6da048\"\u003e\u003ccode\u003ee3bd5bd\u003c/code\u003e\u003c/a\u003e 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e fix: resolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b23d9194d6db1c4d237da0da623a081573385915\"\u003e\u003ccode\u003eb23d919\u003c/code\u003e\u003c/a\u003e chore: remove unused CI exclude for Python 3.8.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/36149e7194d9a24fc8109265dee80fecd362f449\"\u003e\u003ccode\u003e36149e7\u003c/code\u003e\u003c/a\u003e 2.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e feat(docs): publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/17d5e48488f7b533efea33ebb89c25e7b4eda7ad\"\u003e\u003ccode\u003e17d5e48\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3fed4432036740392483608a9da86637cf1bd64b\"\u003e\u003ccode\u003e3fed443\u003c/code\u003e\u003c/a\u003e 2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e feat: add callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c4ab1e5409fe086c12932e47dc4a305eb15b4091\"\u003e\u003ccode\u003ec4ab1e5\u003c/code\u003e\u003c/a\u003e 2.4.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e fix: close runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.0...v2.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aioitertools` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aioitertools/blob/main/CHANGELOG.md\"\u003eaioitertools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eModernized project metadata (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed references to old branch (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTested up to Python 3.14 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse modern type annotations, clean up lint (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.12.0...v0.13.0\n     1\tAlireza Ghasemi\n     6\tAmethyst Reese\n    10\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/47a2068abc2c7e34bff1a188cb5ce66fa24d9404\"\u003e\u003ccode\u003e47a2068\u003c/code\u003e\u003c/a\u003e Version bump v0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/e1a9219e58fb948223c292715e83ec1281c3a5e2\"\u003e\u003ccode\u003ee1a9219\u003c/code\u003e\u003c/a\u003e Enable RUF rules (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/a744b4a9951aaa92fabb85fc401a7c287755eeee\"\u003e\u003ccode\u003ea744b4a\u003c/code\u003e\u003c/a\u003e Ruff upgrade lint fixes (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/3bcf4e9bef9154589ee90b0bf9185f0fe04e1c39\"\u003e\u003ccode\u003e3bcf4e9\u003c/code\u003e\u003c/a\u003e Switch from flake8 to ruff (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/1e3e55cd0fe6ee61064d2c325fb0617f08e83f4a\"\u003e\u003ccode\u003e1e3e55c\u003c/code\u003e\u003c/a\u003e Bump ufmt from 2.7.1 to 2.8.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/4c8b4f8a873cf66a4c729002ddc74b4bf32f03ab\"\u003e\u003ccode\u003e4c8b4f8\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.1.1 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/8524be5b77433e81eb6ecf8739ffe38844e6ca8f\"\u003e\u003ccode\u003e8524be5\u003c/code\u003e\u003c/a\u003e Bump black from 24.8.0 to 25.9.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/78e7205fb4d85686b5e459152ddc06fc1feee538\"\u003e\u003ccode\u003e78e7205\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.11.2 to 1.18.2 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/eafa768f4274f922cfe74afaa1bfb5549f887fb6\"\u003e\u003ccode\u003eeafa768\u003c/code\u003e\u003c/a\u003e Bump coverage from 7.6.1 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/15c764cfe45e9972e27bef5cb66a12fdf8a3f577\"\u003e\u003ccode\u003e15c764c\u003c/code\u003e\u003c/a\u003e Bump flit from 3.9.0 to 3.12.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aioitertools/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiokafka` from 0.11.0 to 0.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/releases\"\u003eaiokafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.12.0\u003c/h2\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/blob/master/CHANGES.rst\"\u003eaiokafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.12.0 (2024-10-26)\u003c/h1\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f6c79a086f1d5cf2b6e94e65db05970c4729c7a0\"\u003e\u003ccode\u003ef6c79a0\u003c/code\u003e\u003c/a\u003e Update actions, fix publishing (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/71335629d503cb3ad260de662e23c32402c8368b\"\u003e\u003ccode\u003e7133562\u003c/code\u003e\u003c/a\u003e Prepare 0.12.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f7861f682c9b5cd78411e7fd6ea0fc4bf92ded33\"\u003e\u003ccode\u003ef7861f6\u003c/code\u003e\u003c/a\u003e Remove duplicate error log during rebalance (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e7c9033b7d44c691073e9e25438f2c8ec523a14f\"\u003e\u003ccode\u003ee7c9033\u003c/code\u003e\u003c/a\u003e Add Python 3.13, remove 3.8 (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/608ab2443510c92226de0eb3fc2065f5d1307e12\"\u003e\u003ccode\u003e608ab24\u003c/code\u003e\u003c/a\u003e Fix ClusterMetadata request_update() (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/4cff9d77014e922c6e458224ed6abbae4fa07c4d\"\u003e\u003ccode\u003e4cff9d7\u003c/code\u003e\u003c/a\u003e Made classes enum.IntEnums where appropriate. (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/01c60cd9c45e975aee8d4932247108a9e639d026\"\u003e\u003ccode\u003e01c60cd\u003c/code\u003e\u003c/a\u003e Quote username in SCRAM auth (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e2afc034b59626242b51b06b30a62c565ef491d9\"\u003e\u003ccode\u003ee2afc03\u003c/code\u003e\u003c/a\u003e fix type on producer docs (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f9dbed1a00337971e6569c6611a98c1ab294fe98\"\u003e\u003ccode\u003ef9dbed1\u003c/code\u003e\u003c/a\u003e Add readthedocs config (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/2f976d0301682f0fe631c04c08d653be0d20ccb1\"\u003e\u003ccode\u003e2f976d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1030\"\u003e#1030\u003c/a\u003e from webknjaz/maintenance/gha-pypi-tokenless-publishing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiokafka/compare/v0.11.0...v0.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosignal` from 1.3.1 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiosignal/releases\"\u003eaiosignal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/413\"\u003e#413\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/645\"\u003e#645\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiosignal/blob/master/CHANGES.rst\"\u003eaiosignal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.4.0 (2025-07-03)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch1\u003e1.3.2 (2024-12-13)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support.\n\u003ccode\u003e[#413](https://github.com/aio-libs/aiosignal/issues/413) \u0026lt;https://github.com/aio-libs/aiosignal/issues/413\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support.\n\u003ccode\u003e[#645](https://github.com/aio-libs/aiosignal/issues/645) \u0026lt;https://github.com/aio-libs/aiosignal/issues/645\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#362](https://github.com/aio-libs/aiosignal/issues/362) \u0026lt;https://github.com/aio-libs/aiosignal/issues/362\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/1cf80149c869d410c90a58e85e9c703be6ef8692\"\u003e\u003ccode\u003e1cf8014\u003c/code\u003e\u003c/a\u003e Fix deploy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/892494c5c72553e281e57e924cf055e6125fb0fc\"\u003e\u003ccode\u003e892494c\u003c/code\u003e\u003c/a\u003e Release v1.4 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/718\"\u003e#718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/fa360821631383aed6a534da6f73ad149ec666f7\"\u003e\u003ccode\u003efa36082\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/719\"\u003e#719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/b7f68f12fed7c4b84a6866984e7adafcd18fe265\"\u003e\u003ccode\u003eb7f68f1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/717\"\u003e#717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/2b1acac380eaaa91a643bfc9c24fa1f3942f0d45\"\u003e\u003ccode\u003e2b1acac\u003c/code\u003e\u003c/a\u003e Build(deps): Bump sigstore/gh-action-sigstore-python from 3.0.0 to 3.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/17456ed5f968c0001a8823c2076f999fbf448157\"\u003e\u003ccode\u003e17456ed\u003c/code\u003e\u003c/a\u003e Build(deps): Bump tox from 4.26.0 to 4.27.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/715\"\u003e#715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/4c236903da2e71b85652c07bed69013189a39406\"\u003e\u003ccode\u003e4c23690\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pytest from 8.4.0 to 8.4.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/714\"\u003e#714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/7be2f6833be08bb14207bc627f9931665cd947ce\"\u003e\u003ccode\u003e7be2f68\u003c/code\u003e\u003c/a\u003e Build(deps): Bump mypy from 1.16.0 to 1.16.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/713\"\u003e#713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/5d62945d07c9413720e968cc3f25c66307d9a337\"\u003e\u003ccode\u003e5d62945\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.9.0 to 7.9.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/a6d85c1c3430621814d6163ea442828e7f31b34b\"\u003e\u003ccode\u003ea6d85c1\u003c/code\u003e\u003c/a\u003e Build(deps): Bump dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiosignal/compare/v1.3.1...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-builder` from 3.1.0 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-builder/releases\"\u003eansible-builder's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: capitalize 'as' to follow from-as-casing rule (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd simple EE file example by (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ehttps://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ea0df628f9d36b34d64b0d93f3491ecd17ef4426\"\u003e\u003ccode\u003eea0df62\u003c/code\u003e\u003c/a\u003e Add scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/757\"\u003e#757\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/97f046fac1f7b7bdbaae17b2efda0837d86362db\"\u003e\u003ccode\u003e97f046f\u003c/code\u003e\u003c/a\u003e Increase integration test timeout to 9m (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/754\"\u003e#754\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ecc55c1205ba48f24ad08820f8ad9629d076a4fa\"\u003e\u003ccode\u003eecc55c1\u003c/code\u003e\u003c/a\u003e Set file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/748\"\u003e#748\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ba2be48febb6a4440bbc0f67c63f5c71dfc32d15\"\u003e\u003ccode\u003eba2be48\u003c/code\u003e\u003c/a\u003e Add simple EE file example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/737\"\u003e#737\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/4af7213490232d5b9fbf2576c6370fd40f75adc4\"\u003e\u003ccode\u003e4af7213\u003c/code\u003e\u003c/a\u003e 🧪🚑 Clone deep in integration tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/735\"\u003e#735\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/d12c45c01d08d337a72916cf4e1a48bac16a2bd5\"\u003e\u003ccode\u003ed12c45c\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/731\"\u003e#731\u003c/a\u003e/1b659226 backport][release_3.1] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5defa3c9f05cfc8212abd3da57926cdc29f7e45e\"\u003e\u003ccode\u003e5defa3c\u003c/code\u003e\u003c/a\u003e docs: Fixing typo in example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/705\"\u003e#705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/6fb2fc098de0092e05c238bc41f596629e9d6598\"\u003e\u003ccode\u003e6fb2fc0\u003c/code\u003e\u003c/a\u003e Fix doc errors in 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5efc3cfdd63cf1f60efec6d9e99ced47c9c2ce48\"\u003e\u003ccode\u003e5efc3cf\u003c/code\u003e\u003c/a\u003e Add 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/49b8a5fc4c9c4839cb57c03473f50bdc8d9a6ee8\"\u003e\u003ccode\u003e49b8a5f\u003c/code\u003e\u003c/a\u003e Modify scripts/check_galaxy to return more descriptive error message(s) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/695\"\u003e#695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-compat` from 24.8.0 to 24.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev24.10.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRe-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e) \u003ca href=\"https://github.com/irozet12\"\u003e\u003ccode\u003e@​irozet12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid running prepare ansible paths twice (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/409\"\u003e#409\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid duplicate paths when path injection (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/407\"\u003e#407\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide more detail on multiple collection installs (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/405\"\u003e#405\u003c/a\u003e) \u003ca href=\"https://github.com/mrgum\"\u003e\u003ccode\u003e@​mrgum\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd communication details (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/400\"\u003e#400\u003c/a\u003e) \u003ca href=\"https://github.com/oraNod\"\u003e\u003ccode\u003e@​oraNod\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix upload-artifact action to work with v4.4 and newer (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/403\"\u003e#403\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/ba624e9511a76f29fd12cff3e01feef1458d3acf\"\u003e\u003ccode\u003eba624e9\u003c/code\u003e\u003c/a\u003e Bump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/6d9524e282a0f5078dfdaf9d01e620493076496d\"\u003e\u003ccode\u003e6d9524e\u003c/code\u003e\u003c/a\u003e Add support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/264a2785eb278406a5b93b9c5a8a1979eee5cc11\"\u003e\u003ccode\u003e264a278\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/1f01f448542e4c258dfa1ed5ea84eab655ddc43b\"\u003e\u003ccode\u003e1f01f44\u003c/code\u003e\u003c/a\u003e Replace pip-compile with uv pip compile (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/43f75ebf417fa914da59f12781aecea6566822ed\"\u003e\u003ccode\u003e43f75eb\u003c/code\u003e\u003c/a\u003e Fix tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/29430b1fe77b02e4c7a5073cefb2a04a67fec338\"\u003e\u003ccode\u003e29430b1\u003c/code\u003e\u003c/a\u003e Tune dependabot config (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/e247f3fab0400f97df08498c9e2cdf34025f1ba8\"\u003e\u003ccode\u003ee247f3f\u003c/code\u003e\u003c/a\u003e Re-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/18c671e23c1d4fa91fd372fca24474b89e31832c\"\u003e\u003ccode\u003e18c671e\u003c/code\u003e\u003c/a\u003e Bump coactions/dynamic-matrix from 3 to 4 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/414\"\u003e#414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/ebe0b2c89717cf7567071b540461f878cefa8185\"\u003e\u003ccode\u003eebe0b2c\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/16538ab64884462d8afdf35b97cb1f02299cef69\"\u003e\u003ccode\u003e16538ab\u003c/code\u003e\u003c/a\u003e Add template for bug reports (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.8.0...v24.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-pygments` from 0.1.1 to 0.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/ansible-pygments/releases\"\u003eansible-pygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.1.2\u003c/h2\u003e\n\u003cp\u003eMaintenance release to ensure that releasing still works.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/cb4a39bef9e4a4169dce502f2f198016967506bb\"\u003e\u003ccode\u003ecb4a39b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/70\"\u003e#70\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/be3cc3b5e5d7264e842938197acca8d6434ec49f\"\u003e\u003ccode\u003ebe3cc3b\u003c/code\u003e\u003c/a\u003e Bump the ci group with 5 updates (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/73\"\u003e#73\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/2e506fd496d33cc3a34673555c5bb18e357d6214\"\u003e\u003ccode\u003e2e506fd\u003c/code\u003e\u003c/a\u003e Fix dependabot config. (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/72\"\u003e#72\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/5f5bc32fb5f6c8c96c1b13660365fee67f90f7b2\"\u003e\u003ccode\u003e5f5bc32\u003c/code\u003e\u003c/a\u003e Add dependabot config (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/73fac92d94987a1ab87ec5aa85db1a117a7785a8\"\u003e\u003ccode\u003e73fac92\u003c/code\u003e\u003c/a\u003e Fix CI: avoid deprecated poetry section, drop macOS and Windows from CI matri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/149a793087a789e6a1905716f69ebec77e610b25\"\u003e\u003ccode\u003e149a793\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/69\"\u003e#69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/bc64e01b0c536ec2cc03ffc470d65eae088632c0\"\u003e\u003ccode\u003ebc64e01\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/68\"\u003e#68\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/709e4e3109a0fc6eabcea757686d0d4635e1f549\"\u003e\u003ccode\u003e709e4e3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/67\"\u003e#67\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/dec1d0799c1f029532faefed2e1b25cb55d6aed8\"\u003e\u003ccode\u003edec1d07\u003c/code\u003e\u003c/a\u003e Require Python 3.9+; add Python 3.12 and 3.13 to CI (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/64\"\u003e#64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/c50df0f4486185b463a78fd4ad8d4cb68f1bac1f\"\u003e\u003ccode\u003ec50df0f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/66\"\u003e#66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/ansible-pygments/compare/0.1.1...0.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-changelog` from 0.29.0 to 0.35.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/releases\"\u003eantsibull-changelog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.35.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003c!-- raw HTML omitted --\u003eshort_description\u003c!-- raw HTML omitted --\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003eRSTDocumentRenderer\u003c!-- raw HTML omitted --\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.33.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003e--strict\u003c!-- raw HTML omitted --\u003e option of the \u003c!-- raw HTML omitted --\u003elint-changelog-yaml\u003c!-- raw HTML omitted --\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003c!-- raw HTML omitted --\u003e--is-collection\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--collection-flatmap\u003c!-- raw HTML omitted --\u003e will likely change to proper flags (\u003c!-- raw HTML omitted --\u003e--flag\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--no-flag`\u003c!-- raw HTML omitted --\u003e instead of \u003c!-- raw HTML omitted --\u003e--flag true\u003c!-- raw HTML omitted --\u003e/\u003c!-- raw HTML omitted --\u003e--flag false\u003c!-- raw HTML omitted --\u003e) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ecreate an issue in the antsibull-changelog repository\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.32.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMajor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe new configuration setting \u003c!-- raw HTML omitted --\u003eoutput\u003c!-- raw HTML omitted --\u003e allows to configure more precisely which changelog files are generated and how they are formatted (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/190\"\u003eansible-community/antsibull-changelog#190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/194\"\u003eansible-community/antsibull-changelog#194\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now depends on Pydantic 2 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAntsibull-changelog now uses Pydantic to parse and validate the config. This means that validation is more strict than before and might reject configs that were incorrect, but still got accepted somehow (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using antsibull-changelog as a library, \u003c!-- raw HTML omitted --\u003eChangelogConfig\u003c!-- raw HTML omitted --\u003e's constructor should no longer be called directly. Instead, use the class method \u003c!-- raw HTML omitted --\u003eChangelogConfig.parse()\u003c!-- raw HTML omitted --\u003e, which has the same signature than the previous constructor, except that \u003c!-- raw HTML omitted --\u003eignore_is_other_project\u003c!-- raw HTML omitted --\u003e now must be a keyword parameter (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/blob/main/CHANGELOG.rst\"\u003eantsibull-changelog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev0.35.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003ccode\u003eshort_description\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.34.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eRSTDocumentRenderer\u003c/code\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.33.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes / Porting Guide\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e--strict\u003c/code\u003e option of the \u003ccode\u003elint-changelog-yaml\u003c/code\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecated Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003ccode\u003e--is-collection\u003c/code\u003e and \u003ccode\u003e--collection-flatmap\u003c/code\u003e will likely change to proper flags (\u003ccode\u003e--flag\u003c/code\u003e and \u003ccode\u003e--no-flag`` instead of ``--flag true``/``--flag false``) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003c/code\u003ecreate an issue in the antsibull-changelog repository \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ehttps://github.com/ansible-community/antsibull-changelog/issues/new\u003c/a\u003e`__ (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.32.0\u003c/h1\u003e\n\u003cp\u003eRelease Summary\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/1fe0013d3e0441552d1cde8abd68329b687e7f72\"\u003e\u003ccode\u003e1fe0013\u003c/code\u003e\u003c/a\u003e Release 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/58abbe5ab70b7da33cd34d006af23adf6d361637\"\u003e\u003ccode\u003e58abbe5\u003c/code\u003e\u003c/a\u003e Prepare 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/3c861b0a7d4cf820da4c83d6f86db5071d29ef73\"\u003e\u003ccode\u003e3c861b0\u003c/code\u003e\u003c/a\u003e Process Ansible markup for module/plugin/role short_description (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/52f345cf51765075c2792abefd27ed9c7e7924df\"\u003e\u003ccode\u003e52f345c\u003c/code\u003e\u003c/a\u003e Adjust tests to changes in antsibull-fileutils.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/5fa16b580e912e1cfa009e8695f3f0ffb29f0b96\"\u003e\u003ccode\u003e5fa16b5\u003c/code\u003e\u003c/a\u003e Remove no longer necessary lint ignore.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2069da37431a5fe447cc3ababac67e8f8776df13\"\u003e\u003ccode\u003e2069da3\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/9c82eabac8ffadd097be0ff13691b45548b24b9b\"\u003e\u003ccode\u003e9c82eab\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.10.16 to 2025.11.12 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/372f87c01391a20f002f3d9bf564a8d340e6a124\"\u003e\u003ccode\u003e372f87c\u003c/code\u003e\u003c/a\u003e Adjust URLs. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2b1e1096ed7d9b2d98a422811c00013422eff927\"\u003e\u003ccode\u003e2b1e109\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.05.01 to 2025.10.16 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/e4148eea4cddd7c86da284f1a352ec01acd1e1f5\"\u003e\u003ccode\u003ee4148ee\u003c/code\u003e\u003c/a\u003e Support Python 3.14. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/compare/0.29.0...0.35.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-core` from 3.0.2 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-core/releases\"\u003eantsibull-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature and maintenance release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logging wrapper classes to simplify switch from twiggy to the standard logging framework (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/issues/39\"\u003eansible-community/antsibull-core#39\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/188\"\u003eansible-community/antsibull-core#188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/191\"\u003eansible-community/antsibull-core#191\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow information on removed or deprecated collections to be updated. This is needed to generate a consistent changelog (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/177\"\u003eansible-community/antsibull-core#17...\n\n_Description has been truncated_","html_url":"https://github.com/ansible/event-driven-ansible/pull/503","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible%2Fevent-driven-ansible/issues/503","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/503/packages"},{"uuid":"3777974319","node_id":"PR_kwDOQy9YA867XVtd","number":1,"state":"closed","title":"Bump the llvm-docs-requirements group in /llvm/docs with 29 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-02T01:36:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-03T11:21:03.000Z","updated_at":"2026-04-02T01:36:22.000Z","time_to_close":7654517,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":29,"packages":[{"name":"sphinx","old_version":"7.2.6","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"sphinx-automodapi","old_version":"0.17.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.8","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinx-reredirects","old_version":"0.1.2","new_version":"1.1.0","repository_url":"https://github.com/documatt/sphinx-reredirects"},{"name":"furo","old_version":"2024.1.29","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"myst-parser","old_version":"2.0.0","new_version":"4.0.1","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"packaging","old_version":"23.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"}],"path":"/llvm/docs","ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group in /llvm/docs with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.2.6` | `9.1.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.17.0` | `0.22.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.8` | `2.0.0` |\n| [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) | `0.1.2` | `1.1.0` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.1.29` | `2025.12.19` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `4.0.1` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.17.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `25.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.1` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.2` |\n\nUpdates `sphinx` from 7.2.6 to 9.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/releases\"\u003esphinx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSphinx 9.1.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://www.sphinx-doc.org/en/master/changes.html\"\u003ehttps://www.sphinx-doc.org/en/master/changes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eadd_static_dir()\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  sphinxsetup.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst\"\u003esphinx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 9.1.0 (released Dec 31, 2025)\u003c/h1\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003e~sphinx.application.Sphinx.add_static_dir\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  :ref:\u003ccode\u003e'sphinxsetup' \u0026lt;latexsphinxsetup\u0026gt;\u003c/code\u003e.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/cc7c6f435ad37bb12264f8118c8461b230e6830c\"\u003e\u003ccode\u003ecc7c6f4\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/b127b9478aa4654a82eeadf1a1e89715d3927608\"\u003e\u003ccode\u003eb127b94\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eapp.add_static_dir()\u003c/code\u003e for copying extension static files (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14219\"\u003e#14219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/20f1c46790d370b50fa7396cca3e1cc658ce9f89\"\u003e\u003ccode\u003e20f1c46\u003c/code\u003e\u003c/a\u003e LaTeX: Inhibit breaks for rows with merged vertical cells (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14227\"\u003e#14227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/3c85411fd06a1c3026f7991818312e5358ef52e5\"\u003e\u003ccode\u003e3c85411\u003c/code\u003e\u003c/a\u003e Polish CHANGES.rst (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14225\"\u003e#14225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/9ee5446c6cfb997a6b92f5cfb84d045ec947417a\"\u003e\u003ccode\u003e9ee5446\u003c/code\u003e\u003c/a\u003e LaTeX: restore 1.7 documentation of literalblockcappos (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14224\"\u003e#14224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d75d602005be7567abc7741ee777f6f8c302d827\"\u003e\u003ccode\u003ed75d602\u003c/code\u003e\u003c/a\u003e LaTeX: improve (again...) some code comments in time for 9.1.0 (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14222\"\u003e#14222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8dca61d69a4a05c56702980e4f6cbe6451dd9ebc\"\u003e\u003ccode\u003e8dca61d\u003c/code\u003e\u003c/a\u003e Improve some LaTeX code comments (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8ab960098a8e12b8893bd3ceafc394759118346b\"\u003e\u003ccode\u003e8ab9600\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d59b2375945ed04414a11b0adb3e5655525f3e9e\"\u003e\u003ccode\u003ed59b237\u003c/code\u003e\u003c/a\u003e autodoc: Improve support for non-weakreferencable objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/964424b3dbc92ed1718272fd45123878f3eec14d\"\u003e\u003ccode\u003e964424b\u003c/code\u003e\u003c/a\u003e Use the correct reference for using existing extensions (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14157\"\u003e#14157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v9.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-automodapi` from 0.17.0 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/releases\"\u003esphinx-automodapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: removing python 3.9 support by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/229\"\u003eastropy/sphinx-automodapi#229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSphinx9 compatibility patch by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/232\"\u003eastropy/sphinx-automodapi#232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI: adding sphinx 8.2 to the matrix by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/212\"\u003eastropy/sphinx-automodapi#212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: dropping support for python 3.8 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/213\"\u003eastropy/sphinx-automodapi#213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor updates by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/211\"\u003eastropy/sphinx-automodapi#211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: fix assignment for sphinxdev (9.0) compatibility by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/215\"\u003eastropy/sphinx-automodapi#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor cleanup of unsupported sphinx workarounds by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/216\"\u003eastropy/sphinx-automodapi#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding Python 3.14 for testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/217\"\u003eastropy/sphinx-automodapi#217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove get_documenter over from Sphinx by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/220\"\u003eastropy/sphinx-automodapi#220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incomplete cleanup in autodoc_enhancements.py by \u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: drop deprecated License classifier, update related metadata (PEP 639) by \u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding the new sphinx 9.0 release to the testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/228\"\u003eastropy/sphinx-automodapi#228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields (continuation of stale PR, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/116\"\u003eastropy/sphinx-automodapi#116\u003c/a\u003e) by \u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: adding python 3.13 to the tests by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/191\"\u003eastropy/sphinx-automodapi#191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Use hash for Action workflow versions and update if needed by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/192\"\u003eastropy/sphinx-automodapi#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompatibility with Sphinx 8.2, minor clean up by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/196\"\u003eastropy/sphinx-automodapi#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Unpin outdated RTD sphinx maxversion by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/199\"\u003eastropy/sphinx-automodapi#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/blob/main/CHANGES.rst\"\u003esphinx-automodapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.0 (2025-12-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.10. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixing deprecation introduced in Sphinx 9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0 (2025-12-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 9.0. [#215, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/224\"\u003e#224\u003c/a\u003e]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Sphinx version is now 5. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.20.0 (2025-06-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/208\"\u003e#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19.0 (2025-04-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eautomodsumm_properties_are_attributes\u003c/code\u003e configuration to control if\nclass properties are treated with \u003ccode\u003eautoattribute\u003c/code\u003e or \u003ccode\u003eautoproperty\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/197\"\u003e#197\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 8.2. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/196\"\u003e#196\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.18.0 (2024-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where items defined in \u003ccode\u003e__all__\u003c/code\u003e but originally imported\nfrom elsewhere, e.g. a private module, were not documented. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/190\"\u003e#190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/04390ab012a02353a887ffd3504b49936bcad46b\"\u003e\u003ccode\u003e04390ab\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/038da98982c351494f787004b3ed5ce283f9bb77\"\u003e\u003ccode\u003e038da98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e from pllim/sphinx10-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/b46c8d6003a36d7e08e7481b94e4b97cc519a408\"\u003e\u003ccode\u003eb46c8d6\u003c/code\u003e\u003c/a\u003e Apply suggestions from code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/24920e7cf29d3a13fdf6e279446492b4562f2da2\"\u003e\u003ccode\u003e24920e7\u003c/code\u003e\u003c/a\u003e Add change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/0f645e8c2c5ebb5a74d572912e8ce9499857d7f2\"\u003e\u003ccode\u003e0f645e8\u003c/code\u003e\u003c/a\u003e Address RemovedInSphinx10Warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/a3bdc2f3c6b42e885ac9b2f1ac75881df1496b5a\"\u003e\u003ccode\u003ea3bdc2f\u003c/code\u003e\u003c/a\u003e Add SPHINX_LT_10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/972c9fb255b8aadd86ac677a280e81b7593ddbb0\"\u003e\u003ccode\u003e972c9fb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e from bsipocz/MAINT_remote_py39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/7503d7a0e119f1b8c629f307baeda771db865474\"\u003e\u003ccode\u003e7503d7a\u003c/code\u003e\u003c/a\u003e DOC: adding changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/5905fd558656bf1307bacd58617473ceea7706d0\"\u003e\u003ccode\u003e5905fd5\u003c/code\u003e\u003c/a\u003e MAINT: some more post sphinx 9.0 cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/120a6059cbfd5ca3898efc6fc930b4a305dcecb6\"\u003e\u003ccode\u003e120a605\u003c/code\u003e\u003c/a\u003e MAINT: dropping support for python 3.9\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.17.0...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinxcontrib-applehelp` from 1.0.8 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/releases\"\u003esphinxcontrib-applehelp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esphinxcontrib-applehelp 2.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003ehttps://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003esphinxcontrib-applehelp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 2.0.0 (2024-07-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdopt Ruff\u003c/li\u003e\n\u003cli\u003eTighten MyPy settings\u003c/li\u003e\n\u003cli\u003eUpdate GitHub actions versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/f4f9d900b238d03da601bf7c75cff5bcbcee6d7c\"\u003e\u003ccode\u003ef4f9d90\u003c/code\u003e\u003c/a\u003e Bump to 2.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/a3e76fcf6c65a18053cf865abc6d05f7598bf410\"\u003e\u003ccode\u003ea3e76fc\u003c/code\u003e\u003c/a\u003e Update CHANGES links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/2292a12982a0b6d58d26747988c069cedbfdc2a5\"\u003e\u003ccode\u003e2292a12\u003c/code\u003e\u003c/a\u003e Rename LICENSE to LICENCE.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/e9efbd43069975476284fe8fd95da3c01271bf77\"\u003e\u003ccode\u003ee9efbd4\u003c/code\u003e\u003c/a\u003e Rename CHANGES to CHANGES.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/0544c40957dafb453ce3fdff09768de9dc21a344\"\u003e\u003ccode\u003e0544c40\u003c/code\u003e\u003c/a\u003e Run CI with Python 3.12 releases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/4e9b50579ecd5f4198ca999461d81569dccecf8f\"\u003e\u003ccode\u003e4e9b505\u003c/code\u003e\u003c/a\u003e Run mypy without command-line options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5f01d2783e68d691f086401af7d69b8c526fc859\"\u003e\u003ccode\u003e5f01d27\u003c/code\u003e\u003c/a\u003e Use the latest GitHub actions versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5b535000130cdea7a24c00f9ea5b5b5a34ccc30b\"\u003e\u003ccode\u003e5b53500\u003c/code\u003e\u003c/a\u003e Enable GitHub's dependabot package update service\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/d51bb2b03d2ee12a997741626a79c0ad2f8716e7\"\u003e\u003ccode\u003ed51bb2b\u003c/code\u003e\u003c/a\u003e Adopt Ruff and use stricter MyPy settings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/fbc12daa3b908d67bf899a129c98c12f03031f27\"\u003e\u003ccode\u003efbc12da\u003c/code\u003e\u003c/a\u003e Update .gitignore\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/compare/1.0.8...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-reredirects` from 0.1.2 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/documatt/sphinx-reredirects/blob/main/docs/changelog.rst\"\u003esphinx-reredirects's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.1.0 (2025-12-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003esupport Sphinx 9.0 and above\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.0.0 (2025-05-31)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eA maintenance release with no new features, but with important code clean-up, dependency update, and modernization.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erequire Python \u0026gt;= 3.11\u003c/li\u003e\n\u003cli\u003erequire Sphinx \u0026gt;= 7.4\u003c/li\u003e\n\u003cli\u003echange license from BSD3 to MIT\u003c/li\u003e\n\u003cli\u003emigrate from pip to uv\u003c/li\u003e\n\u003cli\u003emigrate from tox to nox\u003c/li\u003e\n\u003cli\u003emigrate from Build/Twine to Flit\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.6 (2025-03-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: preserve URL fragments in redirects (the \u003ccode\u003e#foo\u003c/code\u003e in \u003ccode\u003ehttps://example.com/docs#foo\u003c/code\u003e) (\u003ccode\u003eissue [#11](https://github.com/documatt/sphinx-reredirects/issues/11) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/11\u0026gt;\u003c/code\u003e_ by \u003ccode\u003eDavid Ekete \u0026lt;https://github.com/davidekete\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: force lint, format, and test with pre-commit hooks\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.5 (2024-07-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: check redirect to external URLs for invalid or non-existing addresses with standard linkcheck builder (\u003ccode\u003eissue [#3](https://github.com/documatt/sphinx-reredirects/issues/3) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/3\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eJean Abou Samra \u0026lt;https://github.com/jeanas\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: requires Sphinx 7.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.4 (2024-06-21)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ccode\u003eEncodingWarning: 'encoding' argument not specified\u003c/code\u003e (\u003ccode\u003eissue [#5](https://github.com/documatt/sphinx-reredirects/issues/5) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/5\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eAnderson Bravalheri \u0026lt;https://github.com/abravalheri\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.3 (2023-11-03)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eNo new features, maintenance release. Contains only fixed URLs because \u003ccode\u003ethe project lives now GitHub \u0026lt;https://github.com/documatt/sphinx-reredirects/\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c73481d284833b755728b5b8ad75e37922d30a13\"\u003e\u003ccode\u003ec73481d\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c699443dbe0bf309e6e2132af8c3269ebb8fd9d5\"\u003e\u003ccode\u003ec699443\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/4644bc1f035e8cdbb211ec9fc784d8d086362129\"\u003e\u003ccode\u003e4644bc1\u003c/code\u003e\u003c/a\u003e feat: change GTM container\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/6f09582ed6de68bd3e2ba2b1099ef8ea7d79cc68\"\u003e\u003ccode\u003e6f09582\u003c/code\u003e\u003c/a\u003e fix: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/7c01dedb843b3b8ae256a5082d8967e622eb1960\"\u003e\u003ccode\u003e7c01ded\u003c/code\u003e\u003c/a\u003e ci: run tests on pull requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/47a6444c9b247fe8f911e4aa84965ebde33e33a1\"\u003e\u003ccode\u003e47a6444\u003c/code\u003e\u003c/a\u003e feat: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/bc47062386d27c12dbf3d9baa8a011c2855c0628\"\u003e\u003ccode\u003ebc47062\u003c/code\u003e\u003c/a\u003e docs: theme from Git instead of .whl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/2a57e7ec09034b98ee56e6aa5e55cdb66a21424c\"\u003e\u003ccode\u003e2a57e7e\u003c/code\u003e\u003c/a\u003e fix: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/9f6918ddb33dff57f457ab0ddb61f1004670b5ca\"\u003e\u003ccode\u003e9f6918d\u003c/code\u003e\u003c/a\u003e feat: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/496390436ed32046052cca73e18bf4a5b9b20cea\"\u003e\u003ccode\u003e4963904\u003c/code\u003e\u003c/a\u003e ci: fix URL to real PyPI\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/documatt/sphinx-reredirects/compare/v0.1.2...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.1.29 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.01.29...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 2.0.0 to 4.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Minor fix for sphinx 8.2 compat by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1013\"\u003eexecutablebooks/MyST-Parser#1013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧪 Add CI testing support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/955\"\u003eexecutablebooks/MyST-Parser#955\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter by \u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Fix typos discovered by codespell by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 remove redundant paragraph by \u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e by \u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support python\u0026gt;=3.10, sphinx \u0026gt;=7,\u0026lt;9, docutils\u0026gt;=0.19,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/952\"\u003eexecutablebooks/MyST-Parser#952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve footnote def/ref warnings and translations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/931\"\u003eexecutablebooks/MyST-Parser#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX empty value for final directive option by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/924\"\u003eexecutablebooks/MyST-Parser#924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 FIX: allow indented option block by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/925\"\u003eexecutablebooks/MyST-Parser#925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/848\"\u003eexecutablebooks/MyST-Parser#848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/916\"\u003eexecutablebooks/MyST-Parser#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.1 - 2025-02-12\u003c/h2\u003e\n\u003cp\u003e🔧 Minor fix for Sphinx 8.2 compatibility (in \u003ca href=\"gh-pr:1013\"\u003egh-pr:1013\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e4.0.0 - 2024-08-05\u003c/h2\u003e\n\u003cp\u003eThis release bumps the supported versions of:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython to \u003ccode\u003e3.10\u003c/code\u003e and greater\u003c/li\u003e\n\u003cli\u003eSphinx to \u003ccode\u003e\u0026gt;=7,\u0026lt;9\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocutils to \u003ccode\u003e\u0026gt;=0.19,\u0026lt;0.22\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, footnotes are now parsed similar to the corresponding reStructuredText, in that resolution (between definitions and references) and ordering is now deferred to transforms on the doctree (in \u003ca href=\"gh-pr:931\"\u003egh-pr:931\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis allows for the proper interaction with other docutils/sphinx transforms, including those that perform translations,\nand logging of warnings for duplicate/unreferenced footnote definitions and also for footnote references with no definitions.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/#syntax/footnotes\"\u003efootnotes guide\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ev3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.1 - 2024-04-28\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccount for the final directive option having an empty value, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:924\"\u003egh-pr:924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-allow indented directive option blocks, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:925\"\u003egh-pr:925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ev3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.0 - 2024-04-23\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"gh-user:hugovk\"\u003egh-user:hugovk\u003c/a\u003e in \u003ca href=\"gh-pr:848\"\u003egh-pr:848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:916\"\u003egh-pr:916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Allow for use of the \u003ccode\u003eline-block\u003c/code\u003e directive by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:900\"\u003egh-pr:900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Emits sphinx include-read event by \u003ca href=\"gh-user:sumezulike\"\u003egh-user:sumezulike\u003c/a\u003e in \u003ca href=\"gh-pr:887\"\u003egh-pr:887\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Nested parse attribution in \u003ccode\u003eattr_block\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:831\"\u003egh-pr:831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Directive option parsing by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u0026lt;gh-pr:796\u003c/li\u003e\n\u003cli\u003e👌 Improve directive parsing warnings by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:893\"\u003egh-pr:893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Allow for opening external links in new tabs (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/856\"\u003e#856\u003c/a\u003e) by \u003ca href=\"gh-user:marjus45\"\u003egh-user:marjus45\u003c/a\u003e in \u003ca href=\"gh-pr:857\"\u003egh-pr:857\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/8a44f5d35197b19aab2f1fe35b6f1dce4960bce5\"\u003e\u003ccode\u003e8a44f5d\u003c/code\u003e\u003c/a\u003e 🚀 Release v4.0.1 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1022\"\u003e#1022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/fbb7f1d9b33b39e48b4bbe4107174c32f4397698\"\u003e\u003ccode\u003efbb7f1d\u003c/code\u003e\u003c/a\u003e 🔧 Minor fix for sphinx 8.2 compat (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/04375589259c3e6e9d6cfb2d479be98fe3cb630a\"\u003e\u003ccode\u003e0437558\u003c/code\u003e\u003c/a\u003e 🔧 update pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1006\"\u003e#1006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/b58737f4a18045a0fc80bfc78539a688462cce62\"\u003e\u003ccode\u003eb58737f\u003c/code\u003e\u003c/a\u003e ⬆️ Update pre-commit requirement from ~=3.0 to ~=4.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f62025fc7d29fd37c3dc46d15a19a62fe6158a16\"\u003e\u003ccode\u003ef62025f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/14ea197b79466bf0ab2204a7cfa05e9cc9619051\"\u003e\u003ccode\u003e14ea197\u003c/code\u003e\u003c/a\u003e 📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/bc3579430f9974770ddb428ad395457e10055097\"\u003e\u003ccode\u003ebc35794\u003c/code\u003e\u003c/a\u003e 📚 remove redundant paragraph (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/9fe724ebf1d02fd979632d82387f802c91e0d6f6\"\u003e\u003ccode\u003e9fe724e\u003c/code\u003e\u003c/a\u003e 🧪 Fix tests for latest sphinx (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/59b5386f92f54241d0036e0726e93b4086970e03\"\u003e\u003ccode\u003e59b5386\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/6bcba98ef33edd43339ee2db7426466cab0053a1\"\u003e\u003ccode\u003e6bcba98\u003c/code\u003e\u003c/a\u003e 🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v2.0.0...v4.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003eLiteral\u003c/code\u003e from the typing module by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1175\"\u003epython-babel/babel#1175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrefer LC_MONETARY when formatting currencies by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1173\"\u003epython-babel/babel#1173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dates formatting \u003ccode\u003eY\u003c/code\u003e, \u003ccode\u003ew\u003c/code\u003e and \u003ccode\u003eW\u003c/code\u003e symbols for week-numbering by \u003ca href=\"https://github.com/jun66j5\"\u003e\u003ccode\u003e@​jun66j5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1179\"\u003epython-babel/babel#1179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage of the \u003ccode\u003epython_format\u003c/code\u003e checker by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1176\"\u003epython-babel/babel#1176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 2.17.0 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1182\"\u003epython-babel/babel#1182\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium.\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old,\nand here's to another great year of inter...\n\n_Description has been truncated_","html_url":"https://github.com/xiaoyu-hhh/test-llvm/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaoyu-hhh%2Ftest-llvm/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"3775275422","node_id":"PR_kwDODfJSfM67O3Qo","number":386,"state":"closed","title":"Bump the llvm-docs-requirements group in /llvm/docs with 29 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-12T15:25:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T22:11:54.000Z","updated_at":"2026-02-12T15:25:18.000Z","time_to_close":3604399,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":29,"packages":[{"name":"sphinx","old_version":"7.2.6","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"sphinx-automodapi","old_version":"0.17.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.8","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinx-reredirects","old_version":"0.1.2","new_version":"1.1.0","repository_url":"https://github.com/documatt/sphinx-reredirects"},{"name":"furo","old_version":"2024.1.29","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"myst-parser","old_version":"2.0.0","new_version":"4.0.1","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"packaging","old_version":"23.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"}],"path":"/llvm/docs","ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group in /llvm/docs with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.2.6` | `9.1.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.17.0` | `0.22.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.8` | `2.0.0` |\n| [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) | `0.1.2` | `1.1.0` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.1.29` | `2025.12.19` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `4.0.1` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.17.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `25.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.1` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.2` |\n\nUpdates `sphinx` from 7.2.6 to 9.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/releases\"\u003esphinx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSphinx 9.1.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://www.sphinx-doc.org/en/master/changes.html\"\u003ehttps://www.sphinx-doc.org/en/master/changes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eadd_static_dir()\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  sphinxsetup.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst\"\u003esphinx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 9.1.0 (released Dec 31, 2025)\u003c/h1\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003e~sphinx.application.Sphinx.add_static_dir\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  :ref:\u003ccode\u003e'sphinxsetup' \u0026lt;latexsphinxsetup\u0026gt;\u003c/code\u003e.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/cc7c6f435ad37bb12264f8118c8461b230e6830c\"\u003e\u003ccode\u003ecc7c6f4\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/b127b9478aa4654a82eeadf1a1e89715d3927608\"\u003e\u003ccode\u003eb127b94\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eapp.add_static_dir()\u003c/code\u003e for copying extension static files (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14219\"\u003e#14219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/20f1c46790d370b50fa7396cca3e1cc658ce9f89\"\u003e\u003ccode\u003e20f1c46\u003c/code\u003e\u003c/a\u003e LaTeX: Inhibit breaks for rows with merged vertical cells (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14227\"\u003e#14227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/3c85411fd06a1c3026f7991818312e5358ef52e5\"\u003e\u003ccode\u003e3c85411\u003c/code\u003e\u003c/a\u003e Polish CHANGES.rst (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14225\"\u003e#14225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/9ee5446c6cfb997a6b92f5cfb84d045ec947417a\"\u003e\u003ccode\u003e9ee5446\u003c/code\u003e\u003c/a\u003e LaTeX: restore 1.7 documentation of literalblockcappos (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14224\"\u003e#14224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d75d602005be7567abc7741ee777f6f8c302d827\"\u003e\u003ccode\u003ed75d602\u003c/code\u003e\u003c/a\u003e LaTeX: improve (again...) some code comments in time for 9.1.0 (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14222\"\u003e#14222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8dca61d69a4a05c56702980e4f6cbe6451dd9ebc\"\u003e\u003ccode\u003e8dca61d\u003c/code\u003e\u003c/a\u003e Improve some LaTeX code comments (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8ab960098a8e12b8893bd3ceafc394759118346b\"\u003e\u003ccode\u003e8ab9600\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d59b2375945ed04414a11b0adb3e5655525f3e9e\"\u003e\u003ccode\u003ed59b237\u003c/code\u003e\u003c/a\u003e autodoc: Improve support for non-weakreferencable objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/964424b3dbc92ed1718272fd45123878f3eec14d\"\u003e\u003ccode\u003e964424b\u003c/code\u003e\u003c/a\u003e Use the correct reference for using existing extensions (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14157\"\u003e#14157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v9.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-automodapi` from 0.17.0 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/releases\"\u003esphinx-automodapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: removing python 3.9 support by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/229\"\u003eastropy/sphinx-automodapi#229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSphinx9 compatibility patch by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/232\"\u003eastropy/sphinx-automodapi#232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI: adding sphinx 8.2 to the matrix by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/212\"\u003eastropy/sphinx-automodapi#212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: dropping support for python 3.8 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/213\"\u003eastropy/sphinx-automodapi#213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor updates by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/211\"\u003eastropy/sphinx-automodapi#211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: fix assignment for sphinxdev (9.0) compatibility by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/215\"\u003eastropy/sphinx-automodapi#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor cleanup of unsupported sphinx workarounds by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/216\"\u003eastropy/sphinx-automodapi#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding Python 3.14 for testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/217\"\u003eastropy/sphinx-automodapi#217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove get_documenter over from Sphinx by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/220\"\u003eastropy/sphinx-automodapi#220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incomplete cleanup in autodoc_enhancements.py by \u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: drop deprecated License classifier, update related metadata (PEP 639) by \u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding the new sphinx 9.0 release to the testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/228\"\u003eastropy/sphinx-automodapi#228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields (continuation of stale PR, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/116\"\u003eastropy/sphinx-automodapi#116\u003c/a\u003e) by \u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: adding python 3.13 to the tests by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/191\"\u003eastropy/sphinx-automodapi#191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Use hash for Action workflow versions and update if needed by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/192\"\u003eastropy/sphinx-automodapi#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompatibility with Sphinx 8.2, minor clean up by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/196\"\u003eastropy/sphinx-automodapi#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Unpin outdated RTD sphinx maxversion by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/199\"\u003eastropy/sphinx-automodapi#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/blob/main/CHANGES.rst\"\u003esphinx-automodapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.0 (2025-12-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.10. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixing deprecation introduced in Sphinx 9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0 (2025-12-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 9.0. [#215, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/224\"\u003e#224\u003c/a\u003e]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Sphinx version is now 5. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.20.0 (2025-06-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/208\"\u003e#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19.0 (2025-04-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eautomodsumm_properties_are_attributes\u003c/code\u003e configuration to control if\nclass properties are treated with \u003ccode\u003eautoattribute\u003c/code\u003e or \u003ccode\u003eautoproperty\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/197\"\u003e#197\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 8.2. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/196\"\u003e#196\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.18.0 (2024-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where items defined in \u003ccode\u003e__all__\u003c/code\u003e but originally imported\nfrom elsewhere, e.g. a private module, were not documented. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/190\"\u003e#190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/04390ab012a02353a887ffd3504b49936bcad46b\"\u003e\u003ccode\u003e04390ab\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/038da98982c351494f787004b3ed5ce283f9bb77\"\u003e\u003ccode\u003e038da98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e from pllim/sphinx10-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/b46c8d6003a36d7e08e7481b94e4b97cc519a408\"\u003e\u003ccode\u003eb46c8d6\u003c/code\u003e\u003c/a\u003e Apply suggestions from code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/24920e7cf29d3a13fdf6e279446492b4562f2da2\"\u003e\u003ccode\u003e24920e7\u003c/code\u003e\u003c/a\u003e Add change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/0f645e8c2c5ebb5a74d572912e8ce9499857d7f2\"\u003e\u003ccode\u003e0f645e8\u003c/code\u003e\u003c/a\u003e Address RemovedInSphinx10Warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/a3bdc2f3c6b42e885ac9b2f1ac75881df1496b5a\"\u003e\u003ccode\u003ea3bdc2f\u003c/code\u003e\u003c/a\u003e Add SPHINX_LT_10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/972c9fb255b8aadd86ac677a280e81b7593ddbb0\"\u003e\u003ccode\u003e972c9fb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e from bsipocz/MAINT_remote_py39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/7503d7a0e119f1b8c629f307baeda771db865474\"\u003e\u003ccode\u003e7503d7a\u003c/code\u003e\u003c/a\u003e DOC: adding changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/5905fd558656bf1307bacd58617473ceea7706d0\"\u003e\u003ccode\u003e5905fd5\u003c/code\u003e\u003c/a\u003e MAINT: some more post sphinx 9.0 cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/120a6059cbfd5ca3898efc6fc930b4a305dcecb6\"\u003e\u003ccode\u003e120a605\u003c/code\u003e\u003c/a\u003e MAINT: dropping support for python 3.9\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.17.0...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinxcontrib-applehelp` from 1.0.8 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/releases\"\u003esphinxcontrib-applehelp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esphinxcontrib-applehelp 2.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003ehttps://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003esphinxcontrib-applehelp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 2.0.0 (2024-07-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdopt Ruff\u003c/li\u003e\n\u003cli\u003eTighten MyPy settings\u003c/li\u003e\n\u003cli\u003eUpdate GitHub actions versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/f4f9d900b238d03da601bf7c75cff5bcbcee6d7c\"\u003e\u003ccode\u003ef4f9d90\u003c/code\u003e\u003c/a\u003e Bump to 2.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/a3e76fcf6c65a18053cf865abc6d05f7598bf410\"\u003e\u003ccode\u003ea3e76fc\u003c/code\u003e\u003c/a\u003e Update CHANGES links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/2292a12982a0b6d58d26747988c069cedbfdc2a5\"\u003e\u003ccode\u003e2292a12\u003c/code\u003e\u003c/a\u003e Rename LICENSE to LICENCE.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/e9efbd43069975476284fe8fd95da3c01271bf77\"\u003e\u003ccode\u003ee9efbd4\u003c/code\u003e\u003c/a\u003e Rename CHANGES to CHANGES.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/0544c40957dafb453ce3fdff09768de9dc21a344\"\u003e\u003ccode\u003e0544c40\u003c/code\u003e\u003c/a\u003e Run CI with Python 3.12 releases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/4e9b50579ecd5f4198ca999461d81569dccecf8f\"\u003e\u003ccode\u003e4e9b505\u003c/code\u003e\u003c/a\u003e Run mypy without command-line options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5f01d2783e68d691f086401af7d69b8c526fc859\"\u003e\u003ccode\u003e5f01d27\u003c/code\u003e\u003c/a\u003e Use the latest GitHub actions versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5b535000130cdea7a24c00f9ea5b5b5a34ccc30b\"\u003e\u003ccode\u003e5b53500\u003c/code\u003e\u003c/a\u003e Enable GitHub's dependabot package update service\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/d51bb2b03d2ee12a997741626a79c0ad2f8716e7\"\u003e\u003ccode\u003ed51bb2b\u003c/code\u003e\u003c/a\u003e Adopt Ruff and use stricter MyPy settings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/fbc12daa3b908d67bf899a129c98c12f03031f27\"\u003e\u003ccode\u003efbc12da\u003c/code\u003e\u003c/a\u003e Update .gitignore\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/compare/1.0.8...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-reredirects` from 0.1.2 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/documatt/sphinx-reredirects/blob/main/docs/changelog.rst\"\u003esphinx-reredirects's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.1.0 (2025-12-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003esupport Sphinx 9.0 and above\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.0.0 (2025-05-31)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eA maintenance release with no new features, but with important code clean-up, dependency update, and modernization.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erequire Python \u0026gt;= 3.11\u003c/li\u003e\n\u003cli\u003erequire Sphinx \u0026gt;= 7.4\u003c/li\u003e\n\u003cli\u003echange license from BSD3 to MIT\u003c/li\u003e\n\u003cli\u003emigrate from pip to uv\u003c/li\u003e\n\u003cli\u003emigrate from tox to nox\u003c/li\u003e\n\u003cli\u003emigrate from Build/Twine to Flit\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.6 (2025-03-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: preserve URL fragments in redirects (the \u003ccode\u003e#foo\u003c/code\u003e in \u003ccode\u003ehttps://example.com/docs#foo\u003c/code\u003e) (\u003ccode\u003eissue [#11](https://github.com/documatt/sphinx-reredirects/issues/11) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/11\u0026gt;\u003c/code\u003e_ by \u003ccode\u003eDavid Ekete \u0026lt;https://github.com/davidekete\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: force lint, format, and test with pre-commit hooks\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.5 (2024-07-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: check redirect to external URLs for invalid or non-existing addresses with standard linkcheck builder (\u003ccode\u003eissue [#3](https://github.com/documatt/sphinx-reredirects/issues/3) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/3\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eJean Abou Samra \u0026lt;https://github.com/jeanas\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: requires Sphinx 7.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.4 (2024-06-21)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ccode\u003eEncodingWarning: 'encoding' argument not specified\u003c/code\u003e (\u003ccode\u003eissue [#5](https://github.com/documatt/sphinx-reredirects/issues/5) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/5\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eAnderson Bravalheri \u0026lt;https://github.com/abravalheri\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.3 (2023-11-03)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eNo new features, maintenance release. Contains only fixed URLs because \u003ccode\u003ethe project lives now GitHub \u0026lt;https://github.com/documatt/sphinx-reredirects/\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c73481d284833b755728b5b8ad75e37922d30a13\"\u003e\u003ccode\u003ec73481d\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c699443dbe0bf309e6e2132af8c3269ebb8fd9d5\"\u003e\u003ccode\u003ec699443\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/4644bc1f035e8cdbb211ec9fc784d8d086362129\"\u003e\u003ccode\u003e4644bc1\u003c/code\u003e\u003c/a\u003e feat: change GTM container\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/6f09582ed6de68bd3e2ba2b1099ef8ea7d79cc68\"\u003e\u003ccode\u003e6f09582\u003c/code\u003e\u003c/a\u003e fix: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/7c01dedb843b3b8ae256a5082d8967e622eb1960\"\u003e\u003ccode\u003e7c01ded\u003c/code\u003e\u003c/a\u003e ci: run tests on pull requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/47a6444c9b247fe8f911e4aa84965ebde33e33a1\"\u003e\u003ccode\u003e47a6444\u003c/code\u003e\u003c/a\u003e feat: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/bc47062386d27c12dbf3d9baa8a011c2855c0628\"\u003e\u003ccode\u003ebc47062\u003c/code\u003e\u003c/a\u003e docs: theme from Git instead of .whl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/2a57e7ec09034b98ee56e6aa5e55cdb66a21424c\"\u003e\u003ccode\u003e2a57e7e\u003c/code\u003e\u003c/a\u003e fix: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/9f6918ddb33dff57f457ab0ddb61f1004670b5ca\"\u003e\u003ccode\u003e9f6918d\u003c/code\u003e\u003c/a\u003e feat: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/496390436ed32046052cca73e18bf4a5b9b20cea\"\u003e\u003ccode\u003e4963904\u003c/code\u003e\u003c/a\u003e ci: fix URL to real PyPI\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/documatt/sphinx-reredirects/compare/v0.1.2...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.1.29 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.01.29...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 2.0.0 to 4.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Minor fix for sphinx 8.2 compat by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1013\"\u003eexecutablebooks/MyST-Parser#1013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧪 Add CI testing support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/955\"\u003eexecutablebooks/MyST-Parser#955\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter by \u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Fix typos discovered by codespell by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 remove redundant paragraph by \u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e by \u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support python\u0026gt;=3.10, sphinx \u0026gt;=7,\u0026lt;9, docutils\u0026gt;=0.19,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/952\"\u003eexecutablebooks/MyST-Parser#952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve footnote def/ref warnings and translations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/931\"\u003eexecutablebooks/MyST-Parser#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX empty value for final directive option by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/924\"\u003eexecutablebooks/MyST-Parser#924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 FIX: allow indented option block by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/925\"\u003eexecutablebooks/MyST-Parser#925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/848\"\u003eexecutablebooks/MyST-Parser#848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/916\"\u003eexecutablebooks/MyST-Parser#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.1 - 2025-02-12\u003c/h2\u003e\n\u003cp\u003e🔧 Minor fix for Sphinx 8.2 compatibility (in \u003ca href=\"gh-pr:1013\"\u003egh-pr:1013\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e4.0.0 - 2024-08-05\u003c/h2\u003e\n\u003cp\u003eThis release bumps the supported versions of:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython to \u003ccode\u003e3.10\u003c/code\u003e and greater\u003c/li\u003e\n\u003cli\u003eSphinx to \u003ccode\u003e\u0026gt;=7,\u0026lt;9\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocutils to \u003ccode\u003e\u0026gt;=0.19,\u0026lt;0.22\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, footnotes are now parsed similar to the corresponding reStructuredText, in that resolution (between definitions and references) and ordering is now deferred to transforms on the doctree (in \u003ca href=\"gh-pr:931\"\u003egh-pr:931\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis allows for the proper interaction with other docutils/sphinx transforms, including those that perform translations,\nand logging of warnings for duplicate/unreferenced footnote definitions and also for footnote references with no definitions.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/#syntax/footnotes\"\u003efootnotes guide\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ev3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.1 - 2024-04-28\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccount for the final directive option having an empty value, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:924\"\u003egh-pr:924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-allow indented directive option blocks, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:925\"\u003egh-pr:925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ev3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.0 - 2024-04-23\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"gh-user:hugovk\"\u003egh-user:hugovk\u003c/a\u003e in \u003ca href=\"gh-pr:848\"\u003egh-pr:848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:916\"\u003egh-pr:916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Allow for use of the \u003ccode\u003eline-block\u003c/code\u003e directive by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:900\"\u003egh-pr:900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Emits sphinx include-read event by \u003ca href=\"gh-user:sumezulike\"\u003egh-user:sumezulike\u003c/a\u003e in \u003ca href=\"gh-pr:887\"\u003egh-pr:887\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Nested parse attribution in \u003ccode\u003eattr_block\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:831\"\u003egh-pr:831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Directive option parsing by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u0026lt;gh-pr:796\u003c/li\u003e\n\u003cli\u003e👌 Improve directive parsing warnings by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:893\"\u003egh-pr:893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Allow for opening external links in new tabs (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/856\"\u003e#856\u003c/a\u003e) by \u003ca href=\"gh-user:marjus45\"\u003egh-user:marjus45\u003c/a\u003e in \u003ca href=\"gh-pr:857\"\u003egh-pr:857\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/8a44f5d35197b19aab2f1fe35b6f1dce4960bce5\"\u003e\u003ccode\u003e8a44f5d\u003c/code\u003e\u003c/a\u003e 🚀 Release v4.0.1 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1022\"\u003e#1022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/fbb7f1d9b33b39e48b4bbe4107174c32f4397698\"\u003e\u003ccode\u003efbb7f1d\u003c/code\u003e\u003c/a\u003e 🔧 Minor fix for sphinx 8.2 compat (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/04375589259c3e6e9d6cfb2d479be98fe3cb630a\"\u003e\u003ccode\u003e0437558\u003c/code\u003e\u003c/a\u003e 🔧 update pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1006\"\u003e#1006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/b58737f4a18045a0fc80bfc78539a688462cce62\"\u003e\u003ccode\u003eb58737f\u003c/code\u003e\u003c/a\u003e ⬆️ Update pre-commit requirement from ~=3.0 to ~=4.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f62025fc7d29fd37c3dc46d15a19a62fe6158a16\"\u003e\u003ccode\u003ef62025f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/14ea197b79466bf0ab2204a7cfa05e9cc9619051\"\u003e\u003ccode\u003e14ea197\u003c/code\u003e\u003c/a\u003e 📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/bc3579430f9974770ddb428ad395457e10055097\"\u003e\u003ccode\u003ebc35794\u003c/code\u003e\u003c/a\u003e 📚 remove redundant paragraph (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/9fe724ebf1d02fd979632d82387f802c91e0d6f6\"\u003e\u003ccode\u003e9fe724e\u003c/code\u003e\u003c/a\u003e 🧪 Fix tests for latest sphinx (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/59b5386f92f54241d0036e0726e93b4086970e03\"\u003e\u003ccode\u003e59b5386\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/6bcba98ef33edd43339ee2db7426466cab0053a1\"\u003e\u003ccode\u003e6bcba98\u003c/code\u003e\u003c/a\u003e 🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v2.0.0...v4.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003eLiteral\u003c/code\u003e from the typing module by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1175\"\u003epython-babel/babel#1175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrefer LC_MONETARY when formatting currencies by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1173\"\u003epython-babel/babel#1173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dates formatting \u003ccode\u003eY\u003c/code\u003e, \u003ccode\u003ew\u003c/code\u003e and \u003ccode\u003eW\u003c/code\u003e symbols for week-numbering by \u003ca href=\"https://github.com/jun66j5\"\u003e\u003ccode\u003e@​jun66j5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1179\"\u003epython-babel/babel#1179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage of the \u003ccode\u003epython_format\u003c/code\u003e checker by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1176\"\u003epython-babel/babel#1176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 2.17.0 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1182\"\u003epython-babel/babel#1182\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium.\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old,\nand here's to another great year of inter...\n\n_Description has been truncated_","html_url":"https://github.com/OpenCilk/opencilk-project/pull/386","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenCilk%2Fopencilk-project/issues/386","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/386/packages"},{"uuid":"3774146753","node_id":"PR_kwDOHOe-ZM67LNva","number":69,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-01T05:18:18.000Z","updated_at":"2026-01-01T05:22:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":16,"packages":[{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"beautifulsoup4","old_version":"4.13.3","new_version":"4.14.3"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals-py","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.6","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.3` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [roman-numerals-py](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.8.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.5...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.2 to 3.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.3\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.3/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/15?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/15?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/487\"\u003e#487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialization PEP 489 for the C extension. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/494\"\u003e#494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/485\"\u003e#485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/503\"\u003e#503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/505\"\u003e#505\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-27\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e.\n:issue:\u003ccode\u003e487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialisation (:pep:\u003ccode\u003e489\u003c/code\u003e) for the C extension.\n:issue:\u003ccode\u003e494\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. :issue:\u003ccode\u003e485\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. :issue:\u003ccode\u003e503\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. :issue:\u003ccode\u003e505\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/297fc8e356e6836a62087949245d09a28e9f1b13\"\u003e\u003ccode\u003e297fc8e\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/7e4e6ce249107c5f27fa6fe890e29da7a8dc8f0c\"\u003e\u003ccode\u003e7e4e6ce\u003c/code\u003e\u003c/a\u003e Free-threading: run with pytest-run-paralell (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/6100b9c0d466495a08d55b33cb172d7b5d8e9aa1\"\u003e\u003ccode\u003e6100b9c\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/506\"\u003e#506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/c9d5ecfc7eec6f611b19cdc8e1cde1aaa65cb8eb\"\u003e\u003ccode\u003ec9d5ecf\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/2f9b33753052e7c6df1464a7c900787d04ae9daf\"\u003e\u003ccode\u003e2f9b337\u003c/code\u003e\u003c/a\u003e tox for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/78d951a9549dee9fc901c55fc79a74a5f01e96fc\"\u003e\u003ccode\u003e78d951a\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bb6744e392e79611b110c5ba022238eb1b855cc2\"\u003e\u003ccode\u003ebb6744e\u003c/code\u003e\u003c/a\u003e add entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/65c4134ab16a3faccbcac2cba90da0db2b799542\"\u003e\u003ccode\u003e65c4134\u003c/code\u003e\u003c/a\u003e upgrade cibuildwheel, add \u003ccode\u003ecp314\u003c/code\u003e wheels and test on CPython 3.14 (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3a9bd88b84c9edba8b922bb12b84a59feed98788\"\u003e\u003ccode\u003e3a9bd88\u003c/code\u003e\u003c/a\u003e add cp314 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/aafe44d87bd7974bc82af8c4010dea9938441edf\"\u003e\u003ccode\u003eaafe44d\u003c/code\u003e\u003c/a\u003e remove slsa provenance (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 24.2 to 25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRe-add a test for Unicode file name parsing by \u003ca href=\"https://github.com/Siddhesh-Agarwal\"\u003e\u003ccode\u003e@​Siddhesh-Agarwal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/863\"\u003epypa/packaging#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade to ruff 0.9.1 by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/865\"\u003epypa/packaging#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for PEP 738 Android tags by \u003ca href=\"https://github.com/mhsmith\"\u003e\u003ccode\u003e@​mhsmith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/880\"\u003epypa/packaging#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(markers): support 'extras' and 'dependency_groups' markers by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/888\"\u003epypa/packaging#888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Siddhesh-Agarwal\"\u003e\u003ccode\u003e@​Siddhesh-Agarwal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/863\"\u003epypa/packaging#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mhsmith\"\u003e\u003ccode\u003e@​mhsmith\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/880\"\u003epypa/packaging#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/888\"\u003epypa/packaging#888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/24.2...25.0\"\u003ehttps://github.com/pypa/packaging/compare/24.2...25.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e25.0 - 2025-04-19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* PEP 751: Add support for ``extras`` and ``dependency_groups`` markers. (:issue:`885`)\n* PEP 738: Add support for Android platform tags. (:issue:`880`)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f58537628042c7f29780b9d33f31597e7fc9d664\"\u003e\u003ccode\u003ef585376\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/600ecea15b2388037b8dc94883504ca612947576\"\u003e\u003ccode\u003e600ecea\u003c/code\u003e\u003c/a\u003e Add changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3910129009b25dd1aa1fe32e644bc891188c56fe\"\u003e\u003ccode\u003e3910129\u003c/code\u003e\u003c/a\u003e support 'extras' and 'dependency_groups' markers (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/888\"\u003e#888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/8e49b4373731bffb110c9583e64ad802cb67c7ea\"\u003e\u003ccode\u003e8e49b43\u003c/code\u003e\u003c/a\u003e Add support for PEP 738 Android tags (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/e624d8edfaa28865de7b5a7da8bd59fd410e5331\"\u003e\u003ccode\u003ee624d8e\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/886\"\u003e#886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/71f38d872a6e88b28da9d1b270f8512475bc90d4\"\u003e\u003ccode\u003e71f38d8\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9b4922dd3c26c8522d716bec79d7e0ed408631c1\"\u003e\u003ccode\u003e9b4922d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/870\"\u003e#870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/8510bd9d3bab5571974202ec85f6ef7b0359bfaf\"\u003e\u003ccode\u003e8510bd9\u003c/code\u003e\u003c/a\u003e Upgrade to ruff 0.9.1 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/865\"\u003e#865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9375ec2eff48257967c97d331b9a76019e95bdb0\"\u003e\u003ccode\u003e9375ec2\u003c/code\u003e\u003c/a\u003e Re-add tests for Unicode file name parsing (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2256ed4ac261309a09daa04cc801abd7cff2e6f0\"\u003e\u003ccode\u003e2256ed4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/864\"\u003e#864\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/24.2...25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygments` from 2.19.1 to 2.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.19.2\u003c/h2\u003e\n\u003cp\u003e(released June 21st, 2025)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/cfca62e6e95136e48a255e8cbffb0bbe1d98456c\"\u003e\u003ccode\u003ecfca62e\u003c/code\u003e\u003c/a\u003e Prepare v2.19.2 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6688300df2ea289a6137c7ee9c78d0bb95683b5c\"\u003e\u003ccode\u003e6688300\u003c/code\u003e\u003c/a\u003e Disable pyodide (currently broken.)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/66997c3e302226a95c22cdaebf827444327920fa\"\u003e\u003ccode\u003e66997c3\u003c/code\u003e\u003c/a\u003e Update ruff version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/94dda77d69a6d6c47c33f06ce2425e7f306154a2\"\u003e\u003ccode\u003e94dda77\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/26634c856cefea620571123577d1f8cf09589ed8\"\u003e\u003ccode\u003e26634c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e from thavelick/fix_lua_runaway_regex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/b6a51ece09e31d3db2b732c8536a533b6de74768\"\u003e\u003ccode\u003eb6a51ec\u003c/code\u003e\u003c/a\u003e fix lua regex causing runaway backtracking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/edef94d66c2d70f05a86ac6098a69ab253b8d946\"\u003e\u003ccode\u003eedef94d\u003c/code\u003e\u003c/a\u003e Investigation for \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/fb6a00ef872e45a23212c214b8494ebedbd4709b\"\u003e\u003ccode\u003efb6a00e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2837\"\u003e#2837\u003c/a\u003e from dlazin/sql-cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bf7aa2368fe7e0f42d4543781f0b00b4565b3995\"\u003e\u003ccode\u003ebf7aa23\u003c/code\u003e\u003c/a\u003e Clean up sql.py\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.1...2.19.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.12.2 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cp\u003eThis release adds several new features, including experimental support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e) and sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e), and support for changes in Python 3.14. In addition, Python 3.8 is no longer supported.\u003c/p\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges included in 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0 (June 2, 2025)\u003c/h1\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0rc1 (May 24, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\nwith changes in Python 3.14. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e).\nPatch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.Reader\u003c/code\u003e and \u003ccode\u003etyping_extensions.Writer\u003c/code\u003e. Patch by\nSebastian Rittau.\u003c/li\u003e\n\u003cli\u003eAdd support for sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e). Patch by\n\u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/623\"\u003e#623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/abaaafd98c1cc7e5baf098ec287a3d22cb339670\"\u003e\u003ccode\u003eabaaafd\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0rc1 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/98104053ea8d49bcdd247804e5fa9f73136acbd4\"\u003e\u003ccode\u003e9810405\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e@disjoint_base\u003c/code\u003e (PEP 800) (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/7ee9e05fd484d06899ce56e80f5e1aa4c760fc03\"\u003e\u003ccode\u003e7ee9e05\u003c/code\u003e\u003c/a\u003e Backport type_params fix from CPython (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/646\"\u003e#646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/1e8eb9c06ef51b3a1e1f05303a16feca13f5ed98\"\u003e\u003ccode\u003e1e8eb9c\u003c/code\u003e\u003c/a\u003e Do not refer to PEP 705 as being experimental (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/648\"\u003e#648\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/typing_extensions/compare/4.12.2...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.3 to 4.14.3\n\nUpdates `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.8.6 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals-py` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 2.2.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/master/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.0.1 (2025-05-09)\u003c/h1\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003cstrong\u003einit\u003c/strong\u003e.py in 3.0.0 was incorrectly generated due to a missing\nbuild dependency and the list of algorithms was empty.  First reported by\nlaymonage.  Thanks to Dmitry Shachnev, Henry Schreiner and Adam Turner for\ndiagnosing and fixing.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/230\"\u003e#230\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/231\"\u003e#231\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd trove classifiers for Armenian and Yiddish which have now been registered\nwith PyPI.  Thanks to Henry Schreiner and Dmitry Shachnev.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/228\"\u003e#228\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate documented details of Python 2 support in old versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eSnowball 3.0.0 (2025-05-08)\u003c/h1\u003e\n\u003ch2\u003eAda\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid Ada code generated for Snowball \u003ccode\u003eloop\u003c/code\u003e (it was partly Pascal!)\nNone of the stemmers shipped in previous releases triggered this bug, but\nthe Turkish stemmer now does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe Ada runtime was not tracking the current length of the string\nbut instead used the current limit value or some other substitute, which\nmanifested as various incorrect behaviours for code inside of \u003ccode\u003esetlimit\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esize\u003c/code\u003e was incorrectly returning the difference between the limit and the\nbackwards limit.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003elenof\u003c/code\u003e or \u003ccode\u003esizeof\u003c/code\u003e on a string variable generated Ada code that didn't\neven compile.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix incorrect preconditions on some methods in the runtime.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug in runtime code used by \u003ccode\u003eattach\u003c/code\u003e, \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string\nvariable assignment when a (sub)string was replaced with a larger string.\nThis bug was triggered by code in the Kraaij-Pohlmann Dutch stemmer\nimplementation (which was previously not enabled by default but is now the\nstandard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid code generated for \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string variable\nassignment.  This bug was triggered by code in the Kraaij-Pohlmann\nDutch stemmer implementation (which was previously not enabled by default\nbut is now the standard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/e4b3efb449ccb994d39230eb6e8440d267471f4a\"\u003e\u003ccode\u003ee4b3efb\u003c/code\u003e\u003c/a\u003e Update for 3.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/bbd3319b7f46c8e82f6f96b2e7969bae7b4fba04\"\u003e\u003ccode\u003ebbd3319\u003c/code\u003e\u003c/a\u003e Protect empty languages dict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/298ff9fcc930fb6fae6bcc8c80eec74f8f73134c\"\u003e\u003ccode\u003e298ff9f\u003c/code\u003e\u003c/a\u003e Update details of Python 2 support in old versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/53fe098738ecb029e943804ad6cec442e54801a8\"\u003e\u003ccode\u003e53fe098\u003c/code\u003e\u003c/a\u003e python: Specify correct dependencies for \u003ccode\u003e$(python_output_dir)/__init__.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/00a22def0924d06bb96dcffd728ae875b61d6613\"\u003e\u003ccode\u003e00a22de\u003c/code\u003e\u003c/a\u003e Stop excluding classifiers for Armenian and Yiddish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/abd9adc758f5ba7f5db567d70a61e0929b69c3c1\"\u003e\u003ccode\u003eabd9adc\u003c/code\u003e\u003c/a\u003e Update for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/d23d3561f48a505236fd8a89748286a80050b03d\"\u003e\u003ccode\u003ed23d356\u003c/code\u003e\u003c/a\u003e Back out incomplete ESM support for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/ff42274e2247c475d9f42993ef307228949d5507\"\u003e\u003ccode\u003eff42274\u003c/code\u003e\u003c/a\u003e Update draft NEWS entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd61f01a4e04c7a79b91a3cc2a42b6ffa144a99b\"\u003e\u003ccode\u003ecd61f01\u003c/code\u003e\u003c/a\u003e tamil: remove_tense_suffix signals if ending removed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/edfe5763ed779aa1622eecd599029ecfb3ddb7aa\"\u003e\u003ccode\u003eedfe576\u003c/code\u003e\u003c/a\u003e nepali: Reformat amongs to be clearer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v2.2.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.6 to 2.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Changes in tests to accommodate latest Python HTML parser changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Deploy with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:open\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:muted\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Recognize the following pseudo selectors: \u003ccode\u003e:autofill\u003c/code\u003e, \u003ccode\u003e:buffering\u003c/code\u003e, \u003ccode\u003e:fullscreen\u003c/code\u003e, \u003ccode\u003e:picture-in-picture\u003c/code\u003e,\n\u003ccode\u003e:popover-open\u003c/code\u003e, \u003ccode\u003e:seeking\u003c/code\u003e, \u003ccode\u003e:stalled\u003c/code\u003e, and \u003ccode\u003e:volume-locked\u003c/code\u003e. These selectors, while recognized, will not match any\nelement as they require a live environment to check element states and browser states. This just prevents Soup Sieve\nfrom failing when any of these selectors are specified.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: A number of existing pseudo-classes are no longer noted as experimental.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Typing fixes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/f89979745e12e83dbb31dde910a0ad08e9c5c717\"\u003e\u003ccode\u003ef899797\u003c/code\u003e\u003c/a\u003e Adjust changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/1b964a850bb482cc183f3f70811b25487ba200ee\"\u003e\u003ccode\u003e1b964a8\u003c/code\u003e\u003c/a\u003e Switch to using Zensical for documents (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/046ce54956a0c30120038561e53b40994d29de2c\"\u003e\u003ccode\u003e046ce54\u003c/code\u003e\u003c/a\u003e Adjustments for changes in HTML parser (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/bf937788f0c3ff9bb2ffffacef7ad8832d8da16e\"\u003e\u003ccode\u003ebf93778\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop Python 3.8 (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/d82b33b72dd2e905dc441babdd68c98c846c1501\"\u003e\u003ccode\u003ed82b33b\u003c/code\u003e\u003c/a\u003e Spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/2fe1c55af2e2b1f033220a741113dba220bb84c9\"\u003e\u003ccode\u003e2fe1c55\u003c/code\u003e\u003c/a\u003e Use \u0026quot;Trusted Publisher\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/a616022df73ddc5ecb71092155be9baba876b52d\"\u003e\u003ccode\u003ea616022\u003c/code\u003e\u003c/a\u003e Link license in readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/6b22489422a9a7080adb2f465b1e0eaf7672603d\"\u003e\u003ccode\u003e6b22489\u003c/code\u003e\u003c/a\u003e Add new selectors and move some existing selectors out of experimental (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/280\"\u003e#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/48be2ee7e99d786d22187990e0d9751a07f3e038\"\u003e\u003ccode\u003e48be2ee\u003c/code\u003e\u003c/a\u003e Branch specifiers on badge do not work\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/fcb3aaf85d1842814abab3887a7d7c0860d85f77\"\u003e\u003ccode\u003efcb3aaf\u003c/code\u003e\u003c/a\u003e Actually update badge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.6...2.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.3.0 to 2.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6.2\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/caiyunapp/cyeva/pull/69","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiyunapp%2Fcyeva/issues/69","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/69/packages"}],"issue_packages":[{"old_version":"3.0.1","new_version":"3.1.1","update_type":"minor","path":null,"pr_created_at":"2026-07-14T18:47:23.000Z","version_change":"3.0.1 → 3.1.1","issue":{"uuid":"4886079563","node_id":"PR_kwDOH8gfRs7xsmsL","number":249,"state":"closed","title":"Bump the all-dependencies group with 23 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-15T01:18:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-14T18:47:23.000Z","updated_at":"2026-07-15T01:18:49.000Z","time_to_close":23484,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":23,"packages":[{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"docutils","old_version":"0.22.3","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"packaging","old_version":"25.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"ruff","old_version":"0.14.9","new_version":"0.15.21","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.3.0","new_version":"1.5.1","repository_url":"https://github.com/pypa/build"},{"name":"pypi-attestations","old_version":"0.0.28","new_version":"0.0.29","repository_url":"https://github.com/pypi/pypi-attestations"},{"name":"pytest","old_version":"9.0.1","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"cython","old_version":"3.2.2","new_version":"3.2.8","repository_url":"https://github.com/cython/cython"},{"name":"setuptools","old_version":"80.9.0","new_version":"83.0.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"mypy","old_version":"1.19.1","new_version":"2.3.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.44.0","new_version":"1.1.1","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pyright","old_version":"1.1.407","new_version":"1.1.411","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"ty","old_version":"0.0.1a30","new_version":"0.0.59","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20251115","new_version":"0.22.3.20260712","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260712","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 23 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.3` | `0.23` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [roman-numerals](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.15.21` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.5.1` |\n| [pypi-attestations](https://github.com/pypi/pypi-attestations) | `0.0.28` | `0.0.29` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.1.1` |\n| [cython](https://github.com/cython/cython) | `3.2.2` | `3.2.8` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `83.0.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.44.0` | `1.1.1` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.407` | `1.1.411` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a30` | `0.0.59` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20251115` | `0.22.3.20260712` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260712` |\n\nUpdates `pygments` from 2.19.2 to 2.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.20.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.20.0\u003c/h2\u003e\n\u003cp\u003e(released March 29th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/708197d82827ba2d5ca78bcbb653c7102ce86dcd\"\u003e\u003ccode\u003e708197d\u003c/code\u003e\u003c/a\u003e Fix underline length.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d4538ae8621d766ecc91ff59caf76ab75983abc\"\u003e\u003ccode\u003e1d4538a\u003c/code\u003e\u003c/a\u003e Prepare 2.20 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/2ceaee4e634eebae2d10a47fd05406871f6bac8f\"\u003e\u003ccode\u003e2ceaee4\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/e3a3c54b58c7f80bc4db887e471d4f91c77844ed\"\u003e\u003ccode\u003ee3a3c54\u003c/code\u003e\u003c/a\u003e Fix Haskell lexer: handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d7c3453e342dac319f58e4091f4ef183cc49d802\"\u003e\u003ccode\u003ed7c3453\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3071\"\u003e#3071\u003c/a\u003e from pygments/harden-html-formatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0f97e7c37d44abfa4ddfddf44a3290fdad586034\"\u003e\u003ccode\u003e0f97e7c\u003c/code\u003e\u003c/a\u003e Harden the HTML formatter against CSS.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9f981b2ba42b88ca5bdcebf12cd01efd7cd80aec\"\u003e\u003ccode\u003e9f981b2\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d889151024e9a53f3702a60558b29b070306e9e\"\u003e\u003ccode\u003e1d88915\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c3d93adb9827fc054c3c12b47bde31c781a36a93\"\u003e\u003ccode\u003ec3d93ad\u003c/code\u003e\u003c/a\u003e Fix ASN.1 lexer: recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/4f06bcf8a5ba3f2b5bda24a26ccf041a1a65d91e\"\u003e\u003ccode\u003e4f06bcf\u003c/code\u003e\u003c/a\u003e fix bad behaving backtracking regex in CommonLispLexer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.3 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.15.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.21\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--add-ignore\u003c/code\u003e for adding \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26346\"\u003e#26346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Drop \u003ccode\u003eC409\u003c/code\u003e tuple comprehension preview behavior (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25707\"\u003e#25707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid whitespace normalization when formatting comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26455\"\u003e#26455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Lint and fix use of deprecated \u003ccode\u003eabc\u003c/code\u003e decorators (\u003ccode\u003eUP051\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26417\"\u003e#26417\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine non-empty f-string detection (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26526\"\u003e#26526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect syntax errors in individual notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26419\"\u003e#26419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-implicit-str-concat\u003c/code\u003e] Fix \u003ccode\u003eISC003\u003c/code\u003e autofix incorrectly stripping \u003ccode\u003e+\u003c/code\u003e from comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26554\"\u003e#26554\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-executable\u003c/code\u003e] Mark \u003ccode\u003eEXE004\u003c/code\u003e fix as unsafe (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mark \u003ccode\u003ePYI061\u003c/code\u003e fixes as unsafe in Python files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26533\"\u003e#26533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epydocstyle\u003c/code\u003e] Skip \u003ccode\u003eoverload-with-docstring\u003c/code\u003e in stub files (\u003ccode\u003eD418\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26318\"\u003e#26318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid per-token source index visitor calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26506\"\u003e#26506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache parenthesized expression boundaries in the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26344\"\u003e#26344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of rendering edits in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26565\"\u003e#26565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInline \u003ccode\u003efits_element\u003c/code\u003e in formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26429\"\u003e#26429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInline formatter printing hot paths (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26504\"\u003e#26504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily create builtin bindings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26510\"\u003e#26510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip empty trivia scans in the source indexer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26507\"\u003e#26507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse ICF for macOS release builds (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25780\"\u003e#25780\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--extend-exclude\u003c/code\u003e to \u003ccode\u003eruff format\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26372\"\u003e#26372\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u0026quot;How does Ruff's import sorting compare to isort?\u0026quot; link to README (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26530\"\u003e#26530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Mozilla Firefox repository link in README (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26537\"\u003e#26537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix misleading docstring for \u003ccode\u003emako-templates\u003c/code\u003e (\u003ccode\u003eS702\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26432\"\u003e#26432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix non-triggering example for \u003ccode\u003eif-key-in-dict-del\u003c/code\u003e (\u003ccode\u003eRUF051\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26433\"\u003e#26433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EkriirkE\"\u003e\u003ccode\u003e@​EkriirkE\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tingerrr\"\u003e\u003ccode\u003e@​tingerrr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.21\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--add-ignore\u003c/code\u003e for adding \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26346\"\u003e#26346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Drop \u003ccode\u003eC409\u003c/code\u003e tuple comprehension preview behavior (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25707\"\u003e#25707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid whitespace normalization when formatting comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26455\"\u003e#26455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Lint and fix use of deprecated \u003ccode\u003eabc\u003c/code\u003e decorators (\u003ccode\u003eUP051\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26417\"\u003e#26417\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine non-empty f-string detection (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26526\"\u003e#26526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect syntax errors in individual notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26419\"\u003e#26419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-implicit-str-concat\u003c/code\u003e] Fix \u003ccode\u003eISC003\u003c/code\u003e autofix incorrectly stripping \u003ccode\u003e+\u003c/code\u003e from comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26554\"\u003e#26554\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-executable\u003c/code\u003e] Mark \u003ccode\u003eEXE004\u003c/code\u003e fix as unsafe (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mark \u003ccode\u003ePYI061\u003c/code\u003e fixes as unsafe in Python files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26533\"\u003e#26533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epydocstyle\u003c/code\u003e] Skip \u003ccode\u003eoverload-with-docstring\u003c/code\u003e in stub files (\u003ccode\u003eD418\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26318\"\u003e#26318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid per-token source index visitor calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26506\"\u003e#26506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache parenthesized expression boundaries in the formatter (\u003ca href=\"https://redirect.github.com/as...\n\n_Description has been truncated_","html_url":"https://github.com/sailfishos-mirror/sphinx/pull/249","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fsphinx/issues/249","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/249/packages"}},{"old_version":"2.2.0","new_version":"3.1.1","update_type":"major","path":"/sdk/python","pr_created_at":"2026-07-01T20:42:36.000Z","version_change":"2.2.0 → 3.1.1","issue":{"uuid":"4789069725","node_id":"PR_kwDOHF08OM7s2qWE","number":1296,"state":"open","title":"chore(deps): bump snowballstemmer from 2.2.0 to 3.1.1 in /sdk/python","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T20:42:36.000Z","updated_at":"2026-07-01T20:42:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":"/sdk/python","ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 2.2.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v2.2.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=2.2.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/dolanor/dagger/pull/1296","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dolanor%2Fdagger/issues/1296","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1296/packages"}},{"old_version":"3.0.1","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2026-07-01T00:23:09.000Z","version_change":"3.0.1 → 3.1.0","issue":{"uuid":"4781325740","node_id":"PR_kwDOHPrDWs7sdMhk","number":638,"state":"closed","title":"Bump the myst-parser-dependencies group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":"2026-07-01T00:42:17.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-01T00:23:09.000Z","updated_at":"2026-07-01T00:56:27.000Z","time_to_close":1148,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"myst-parser-dependencies","update_count":4,"packages":[{"name":"docutils","old_version":"0.22.4","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"mdit-py-plugins","old_version":"0.5.0","new_version":"0.6.1","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"5.0.0","new_version":"5.1.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps the myst-parser-dependencies group with 4 updates in the / directory: [docutils](https://github.com/rtfd/recommonmark), [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins), [myst-parser](https://github.com/executablebooks/MyST-Parser) and [snowballstemmer](https://github.com/snowballstem/snowball).\n\nUpdates `docutils` from 0.22.4 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mdit-py-plugins` from 0.5.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/releases\"\u003emdit-py-plugins's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/139\"\u003eexecutablebooks/mdit-py-plugins#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.1 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/140\"\u003eexecutablebooks/mdit-py-plugins#140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add AGENTS.md and copilot-setup-steps workflow by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ NEW: Add superscript plugin and tests by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add GFM autolink and composite GFM plugins by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/135\"\u003eexecutablebooks/mdit-py-plugins#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fix pre-commit by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/136\"\u003eexecutablebooks/mdit-py-plugins#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/137\"\u003eexecutablebooks/mdit-py-plugins#137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/blob/master/CHANGELOG.md\"\u003emdit-py-plugins's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.6.1 - 2026-05-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eField lists inside list items (or other indented containers) would recursively nest each field inside the previous one, instead of being siblings.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.6.0 - 2026-05-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003egfm_autolink\u003c/code\u003e plugin implements \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolink literals\u003c/a\u003e,\nauto-linking URLs and email addresses without requiring angle brackets:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003eVisit www.example.com or contact user@example.com\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe \u003ccode\u003egfm\u003c/code\u003e composite plugin enables a full Github Flavored Markdown (GFM)-like configuration in a single call\n(tables, strikethrough, autolinks, task lists, alerts, and footnotes).\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax\"\u003ethe GitHub docs\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRequires markdown-it-py \u0026gt;= 4.1.0.\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add superscript plugin and tests, thanks to \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003ePorted from \u003ca href=\"https://github.com/markdown-it/markdown-it-sup\"\u003emarkdown-it-sup\u003c/a\u003e.\nRenders superscript text using \u003ccode\u003e^..^\u003c/code\u003e syntax:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003e29^th^ of May\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/da70e05b7630c38047d1921ef21d1aadc34c1ea9\"\u003e\u003ccode\u003eda70e05\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.1 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/f41d88c17c90dac4f9fd77418e1dcc2ba2c4ea9b\"\u003e\u003ccode\u003ef41d88c\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b8735072c4a0d406ad29a87f472a638f6d4ac3f5\"\u003e\u003ccode\u003eb873507\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.0 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b77a18bcb3a8a640dbfc57dcb901fa18cee74bf8\"\u003e\u003ccode\u003eb77a18b\u003c/code\u003e\u003c/a\u003e 🔧 Fix pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/28a97783ee58785003bc9c84e0821bc3babb35a3\"\u003e\u003ccode\u003e28a9778\u003c/code\u003e\u003c/a\u003e ✨ Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/39c681fddac49430ee4a748433bcfae5888b7576\"\u003e\u003ccode\u003e39c681f\u003c/code\u003e\u003c/a\u003e ✨ NEW: Add superscript plugin and tests (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/62f00586e872e62a700fb13f65e254c686474fc6\"\u003e\u003ccode\u003e62f0058\u003c/code\u003e\u003c/a\u003e 🔧 Add AGENTS.md and copilot-setup-steps workflow (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 5.0.0 to 5.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003ch2\u003e✨ New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#alerts-github-style-callouts\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#gfm-autolinks\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#code-fences-using-colons\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e👌 Improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ccode\u003emyst_gfm_only\u003c/code\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1126\"\u003e#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1129\"\u003e#1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⬆️ Dependency Upgrades\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mb\"\u003e\u003ccode\u003e@​mb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1126\"\u003eexecutablebooks/MyST-Parser#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Bizordec\"\u003e\u003ccode\u003e@​Bizordec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1114\"\u003eexecutablebooks/MyST-Parser#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilia-kats\"\u003e\u003ccode\u003e@​ilia-kats\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1110\"\u003eexecutablebooks/MyST-Parser#1110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0 - 2026-05-13\u003c/h2\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/alerts\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/gfm-autolink\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/colon_fence\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👌 Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003e\u003ccode\u003emyst_gfm_only\u003c/code\u003e\u003c/a\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1110\"\u003egh-pr:1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1133\"\u003egh-pr:1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1114\"\u003egh-pr:1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1126\"\u003egh-pr:1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1129\"\u003egh-pr:1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1134\"\u003egh-pr:1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⬆️ Dependency Upgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1117\"\u003egh-pr:1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ev5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/2871eb95750873ccec2c4ab1dac0568815b64ca5\"\u003e\u003ccode\u003e2871eb9\u003c/code\u003e\u003c/a\u003e 🚀 Release v5.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1135\"\u003e#1135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cc5db37fd06445d7d023f7f2e0c2c073730be9cf\"\u003e\u003ccode\u003ecc5db37\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Pin mdit-py-plugins\u0026gt;=0.6.1 for nested field list fix (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/4ce57f94af31de53c8790ccfffa3107c64241d0d\"\u003e\u003ccode\u003e4ce57f9\u003c/code\u003e\u003c/a\u003e 👌 Stop directive-option parsing at colon fences (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cfcc3278f9e8c7508aae4cea82f1dd9c5c111183\"\u003e\u003ccode\u003ecfcc327\u003c/code\u003e\u003c/a\u003e ⬆️ Bump mypy from 2.0.0 to 2.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1131\"\u003e#1131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/691738c3d897f82577440e18079d8b990edb8e34\"\u003e\u003ccode\u003e691738c\u003c/code\u003e\u003c/a\u003e ⬆️ Bump ruff from 0.15.10 to 0.15.12 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1132\"\u003e#1132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/0fb1ae983d7b0df68bd02a9f77b0bc45057edbaf\"\u003e\u003ccode\u003e0fb1ae9\u003c/code\u003e\u003c/a\u003e 👌 IMPROVE: MathJax 4 compatibility (Sphinx 9) (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f153b4b8ae68cbe77b41942147cf5cb6464168f0\"\u003e\u003ccode\u003ef153b4b\u003c/code\u003e\u003c/a\u003e ⬆️ Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/93acf8dae502aba484b14a1d291366fc21f839e6\"\u003e\u003ccode\u003e93acf8d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1095\"\u003e#1095\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/a5f1d6963bc3ee361d25309a24ccc42e6860fd54\"\u003e\u003ccode\u003ea5f1d69\u003c/code\u003e\u003c/a\u003e ⬆️ Update pygments requirement from \u0026lt;2.20 to \u0026lt;2.21 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/838129687219517e31a395736397c957d93532dd\"\u003e\u003ccode\u003e8381296\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Use docname instead of source path in warning locations (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e","html_url":"https://github.com/ryu22e/cookiecutter-sphinx-revealjs/pull/638","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryu22e%2Fcookiecutter-sphinx-revealjs/issues/638","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/638/packages"}},{"old_version":"3.0.1","new_version":"3.1.1","update_type":"minor","path":null,"pr_created_at":"2026-06-15T18:51:12.000Z","version_change":"3.0.1 → 3.1.1","issue":{"uuid":"4667961567","node_id":"PR_kwDOH8gfRs7mrymG","number":217,"state":"closed","title":"Bump the all-dependencies group with 22 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-16T00:55:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-15T18:51:12.000Z","updated_at":"2026-06-16T00:55:42.000Z","time_to_close":21868,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":22,"packages":[{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"docutils","old_version":"0.22.3","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"packaging","old_version":"25.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"ruff","old_version":"0.14.9","new_version":"0.15.17","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.3.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pypi-attestations","old_version":"0.0.28","new_version":"0.0.29","repository_url":"https://github.com/pypi/pypi-attestations"},{"name":"pytest","old_version":"9.0.1","new_version":"9.1.0","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"cython","old_version":"3.2.2","new_version":"3.2.5","repository_url":"https://github.com/cython/cython"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"mypy","old_version":"1.19.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.44.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pyright","old_version":"1.1.407","new_version":"1.1.410","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"ty","old_version":"0.0.1a30","new_version":"0.0.49","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20251115","new_version":"0.22.3.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.3` | `0.23` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [roman-numerals](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.15.17` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.5.0` |\n| [pypi-attestations](https://github.com/pypi/pypi-attestations) | `0.0.28` | `0.0.29` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.1.0` |\n| [cython](https://github.com/cython/cython) | `3.2.2` | `3.2.5` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.1` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.44.0` | `1.0.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.407` | `1.1.410` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a30` | `0.0.49` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20251115` | `0.22.3.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260518` |\n\nUpdates `pygments` from 2.19.2 to 2.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.20.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.20.0\u003c/h2\u003e\n\u003cp\u003e(released March 29th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/708197d82827ba2d5ca78bcbb653c7102ce86dcd\"\u003e\u003ccode\u003e708197d\u003c/code\u003e\u003c/a\u003e Fix underline length.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d4538ae8621d766ecc91ff59caf76ab75983abc\"\u003e\u003ccode\u003e1d4538a\u003c/code\u003e\u003c/a\u003e Prepare 2.20 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/2ceaee4e634eebae2d10a47fd05406871f6bac8f\"\u003e\u003ccode\u003e2ceaee4\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/e3a3c54b58c7f80bc4db887e471d4f91c77844ed\"\u003e\u003ccode\u003ee3a3c54\u003c/code\u003e\u003c/a\u003e Fix Haskell lexer: handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d7c3453e342dac319f58e4091f4ef183cc49d802\"\u003e\u003ccode\u003ed7c3453\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3071\"\u003e#3071\u003c/a\u003e from pygments/harden-html-formatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0f97e7c37d44abfa4ddfddf44a3290fdad586034\"\u003e\u003ccode\u003e0f97e7c\u003c/code\u003e\u003c/a\u003e Harden the HTML formatter against CSS.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9f981b2ba42b88ca5bdcebf12cd01efd7cd80aec\"\u003e\u003ccode\u003e9f981b2\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d889151024e9a53f3702a60558b29b070306e9e\"\u003e\u003ccode\u003e1d88915\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c3d93adb9827fc054c3c12b47bde31c781a36a93\"\u003e\u003ccode\u003ec3d93ad\u003c/code\u003e\u003c/a\u003e Fix ASN.1 lexer: recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/4f06bcf8a5ba3f2b5bda24a26ccf041a1a65d91e\"\u003e\u003ccode\u003e4f06bcf\u003c/code\u003e\u003c/a\u003e fix bad behaving backtracking regex in CommonLispLexer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.3 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.15.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.17\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct capacity for common cases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25451\"\u003e#25451\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve whitespace for Quarto cell option comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25641\"\u003e#25641\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rule names in \u003ccode\u003eruff rule\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25640\"\u003e#25640\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix playground diagnostics scrollbars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25642\"\u003e#25642\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SuryanshSS1011\"\u003e\u003ccode\u003e@​SuryanshSS1011\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romero-deshaw\"\u003e\u003ccode\u003e@​romero-deshaw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/karlhillx\"\u003e\u003ccode\u003e@​karlhillx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.17\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct...\n\n_Description has been truncated_","html_url":"https://github.com/sailfishos-mirror/sphinx/pull/217","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fsphinx/issues/217","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/217/packages"}},{"old_version":"3.0.1","new_version":"3.1.1","update_type":"minor","path":null,"pr_created_at":"2026-06-11T23:06:49.000Z","version_change":"3.0.1 → 3.1.1","issue":{"uuid":"4644838350","node_id":"PR_kwDOM92Pn87liJuq","number":32,"state":"open","title":"Bump the non-security-minor-patch group with 16 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-11T23:06:49.000Z","updated_at":"2026-06-11T23:07:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"non-security-minor-patch","update_count":16,"packages":[{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ipython","old_version":"9.12.0","new_version":"9.14.1","repository_url":"https://github.com/ipython/ipython"},{"name":"certifi","old_version":"2026.2.25","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.6","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"idna","old_version":"3.11","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"docutils","old_version":"0.18.1","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"jedi","old_version":"0.19.2","new_version":"0.20.0","repository_url":"https://github.com/davidhalter/jedi"},{"name":"matplotlib-inline","old_version":"0.2.1","new_version":"0.2.2","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.6","new_version":"0.8.7","repository_url":"https://github.com/davidhalter/parso"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"traitlets","old_version":"5.14.3","new_version":"5.15.1","repository_url":"https://github.com/ipython/traitlets"},{"name":"wcwidth","old_version":"0.6.0","new_version":"0.8.1","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the non-security-minor-patch group with 16 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [ipython](https://github.com/ipython/ipython) | `9.12.0` | `9.14.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.2.25` | `2026.5.20` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.6` | `3.4.7` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.18` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.18.1` | `0.23` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.19.2` | `0.20.0` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.2.1` | `0.2.2` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.6` | `0.8.7` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.14.3` | `5.15.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.6.0` | `0.8.1` |\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ipython` from 9.12.0 to 9.14.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/352c35b9e841fe20c2a0dc09af67e180e6854322\"\u003e\u003ccode\u003e352c35b\u003c/code\u003e\u003c/a\u003e release 9.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/df72b1f8d94e874947f6425dbbcca614942aa3f5\"\u003e\u003ccode\u003edf72b1f\u003c/code\u003e\u003c/a\u003e Add forward compatibility for pdb.Pdb's mode argument (\u003ca href=\"https://redirect.github.com/ipython/ipython/issues/15235\"\u003e#15235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/a957d81c3177d33fc9d0b5fe123e58dd8cbf87e7\"\u003e\u003ccode\u003ea957d81\u003c/code\u003e\u003c/a\u003e Handle pdb.Pdb \u003ccode\u003emode\u003c/code\u003e argument and test signature compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/3e1c0544e141d55cd232259d4828a633e952f5fc\"\u003e\u003ccode\u003e3e1c054\u003c/code\u003e\u003c/a\u003e ci: add zizmor GitHub Actions security analysis and harden workflows (\u003ca href=\"https://redirect.github.com/ipython/ipython/issues/15238\"\u003e#15238\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/0181ae38b68b929f464c349ad139e1080ee60a93\"\u003e\u003ccode\u003e0181ae3\u003c/code\u003e\u003c/a\u003e ci: add zizmor GitHub Actions security analysis and harden workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/fb831cc06fe27a12f5d52f6608fa90857428748c\"\u003e\u003ccode\u003efb831cc\u003c/code\u003e\u003c/a\u003e back to dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/9d1f24b9687279362b66f4e8c8a36ffde895a05d\"\u003e\u003ccode\u003e9d1f24b\u003c/code\u003e\u003c/a\u003e release 9.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/d8b9d11f2796300d914a88dc08de35ce93bc5aa0\"\u003e\u003ccode\u003ed8b9d11\u003c/code\u003e\u003c/a\u003e Add IPython 9.14 release notes (\u003ca href=\"https://redirect.github.com/ipython/ipython/issues/15228\"\u003e#15228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/80cc1b963349ebc472b69f7da505cccebb2e6ad5\"\u003e\u003ccode\u003e80cc1b9\u003c/code\u003e\u003c/a\u003e Apply suggestions from code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/99feaadc543d43abc9287734651f4b618305a6bb\"\u003e\u003ccode\u003e99feaad\u003c/code\u003e\u003c/a\u003e Prepare release notes for 9.14\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipython/compare/9.12.0...9.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.2.25 to 2026.5.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.02.25...2026.05.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.6 to 3.4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.6...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.11 to 3.18\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\nas arguments or on standard input, with options to select A-label\nor U-label output and control error handling.\u003c/li\u003e\n\u003cli\u003eRaise the minimum supported Python version to 3.9\u003c/li\u003e\n\u003cli\u003eVarious code quality improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f39ea903ba49eb5a0b2c6723c9a929b41ed4a0f1\"\u003e\u003ccode\u003ef39ea90\u003c/code\u003e\u003c/a\u003e Release 3.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/40f4e407bc7452da37c24b0c112dcda9a5b299ba\"\u003e\u003ccode\u003e40f4e40\u003c/code\u003e\u003c/a\u003e Pre-release 3.18rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1a5bf80f2fa40454589e6144efe5f72015ef9d24\"\u003e\u003ccode\u003e1a5bf80\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/253\"\u003e#253\u003c/a\u003e from kjd/lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5bbb26fc86e28c4ee1434ae8ae8db76de4c2a5ac\"\u003e\u003ccode\u003e5bbb26f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c532bae5270489cef8faf9f6b1eb70cbcb454c6d\"\u003e\u003ccode\u003ec532bae\u003c/code\u003e\u003c/a\u003e Rename decode() lenient= option to display= (issue \u003ca href=\"https://redirect.github.com/kjd/idna/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0b1758ba11952a2e88fd6141ffa620409bff0580\"\u003e\u003ccode\u003e0b1758b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/252\"\u003e#252\u003c/a\u003e from kjd/release-3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f48619c4cea6859b938d560fdd9feb898e678567\"\u003e\u003ccode\u003ef48619c\u003c/code\u003e\u003c/a\u003e Release 3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7421ba8003227f816142ab40178e3a7d204e6847\"\u003e\u003ccode\u003e7421ba8\u003c/code\u003e\u003c/a\u003e Pre-release 3.17rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/22ebb73b164081f209449b50162eb7ce086e96a4\"\u003e\u003ccode\u003e22ebb73\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/251\"\u003e#251\u003c/a\u003e from kjd/structure-optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2a7ac0a58c788d50112a5003af545a83807fb108\"\u003e\u003ccode\u003e2a7ac0a\u003c/code\u003e\u003c/a\u003e Drop redundant parallel-arrays comment from uts46data\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.11...v3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.6.3 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues. Impact was limited to specific use cases detailed in the accompanying advisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been read and decompressed partially. (Reported by \u003ca href=\"https://github.com/Cycloctane\"\u003e\u003ccode\u003e@​Cycloctane\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or \u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed using the official \u003ca href=\"https://pypi.org/project/brotli/\"\u003eBrotli\u003c/a\u003e library. (Reported by \u003ca href=\"https://github.com/kimkou2024\"\u003e\u003ccode\u003e@​kimkou2024\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee GHSA-mf9v-mfxr-j63j for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip sensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when redirecting to a different host. (GHSA-qccp-gfcp-xxvc reported by \u003ca href=\"https://github.com/christos-spearbit\"\u003e\u003ccode\u003e@​christos-spearbit\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better visibility of existing deprecation notices. Rescheduled the removal of deprecated features to version 3.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3763\"\u003eurllib3/urllib3#3763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3720\"\u003eurllib3/urllib3#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003eurllib3/urllib3#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3777\"\u003eurllib3/urllib3#3777\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed data buffered from previous partial reads. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3636\"\u003eurllib3/urllib3#3636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the response after a partial read when \u003ccode\u003ecache_content=True\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4967\"\u003eurllib3/urllib3#4967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.stream()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to handle \u003ccode\u003eamt=0\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3793\"\u003eurllib3/urllib3#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003e_TYPE_BODY\u003c/code\u003e type alias to include missing \u003ccode\u003eIterable[str]\u003c/code\u003e, matching the documented and runtime behavior of chunked request bodies. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3798\"\u003eurllib3/urllib3#3798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eLocationParseError\u003c/code\u003e when paths resembling schemeless URIs were passed to \u003ccode\u003eHTTPConnectionPool.urlopen()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3352\"\u003eurllib3/urllib3#3352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eBaseHTTPResponse.readinto()\u003c/code\u003e type annotation to accept \u003ccode\u003ememoryview\u003c/code\u003e in addition to \u003ccode\u003ebytearray\u003c/code\u003e, matching the \u003ccode\u003eio.RawIOBase.readinto\u003c/code\u003e contract and enabling use with \u003ccode\u003eio.BufferedReader\u003c/code\u003e without type errors. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3764\"\u003eurllib3/urllib3#3764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.7.0 (2026-05-07)\u003c/h1\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues.\nImpact was limited to specific use cases detailed in the accompanying\nadvisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been\nread and decompressed partially.\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or\n\u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed\nusing the official \u003ccode\u003eBrotli \u0026lt;https://pypi.org/project/brotli/\u0026gt;\u003c/code\u003e__ library.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee \u003ccode\u003eGHSA-mf9v-mfxr-j63j \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j\u0026gt;\u003c/code\u003e__\nfor details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip\nsensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when\nredirecting to a different host.\n(\u003ccode\u003eGHSA-qccp-gfcp-xxvc \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc\u0026gt;\u003c/code\u003e__)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better\nvisibility of existing deprecation notices. Rescheduled the removal of\ndeprecated features to version 3.0.\n(\u003ccode\u003e[#3763](https://github.com/urllib3/urllib3/issues/3763) \u0026lt;https://github.com/urllib3/urllib3/issues/3763\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9.\n(\u003ccode\u003e[#3720](https://github.com/urllib3/urllib3/issues/3720) \u0026lt;https://github.com/urllib3/urllib3/issues/3720\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10.\n(\u003ccode\u003e[#4979](https://github.com/urllib3/urllib3/issues/4979) \u0026lt;https://github.com/urllib3/urllib3/issues/4979\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0.\n(\u003ccode\u003e[#3777](https://github.com/urllib3/urllib3/issues/3777) \u0026lt;https://github.com/urllib3/urllib3/issues/3777\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed\ndata buffered from previous partial reads.\n(\u003ccode\u003e[#3636](https://github.com/urllib3/urllib3/issues/3636) \u0026lt;https://github.com/urllib3/urllib3/issues/3636\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the\nresponse after a partial read when \u003ccode\u003ecache_content=True\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/9a950b92d999f906b6020bb2d1076ee56cddd5d2\"\u003e\u003ccode\u003e9a950b9\u003c/code\u003e\u003c/a\u003e Release 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/5ec0de499b9166ca71c65ab04f2a7e4eb0d66fcc\"\u003e\u003ccode\u003e5ec0de4\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2bdcc44d1e163fb5cc48a8662425e35e15adfe6a\"\u003e\u003ccode\u003e2bdcc44\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/f45b0df09d8620ac6ed0491eb9362c8c87b7bc2c\"\u003e\u003ccode\u003ef45b0df\u003c/code\u003e\u003c/a\u003e Fix a misleading example for \u003ccode\u003eProxyManager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/577193ca029872384f82c133449e0935f6d8a64b\"\u003e\u003ccode\u003e577193c\u003c/code\u003e\u003c/a\u003e Switch to nightly PyPy3.11 in CI for now (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/e90af45bb006c3a452a3a21644a2681523f5c7fc\"\u003e\u003ccode\u003ee90af45\u003c/code\u003e\u003c/a\u003e Avoid infinite loop in \u003ccode\u003eHTTPResponse.read_chunked\u003c/code\u003e when \u003ccode\u003eamt=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4974\"\u003e#4974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/67ed74fdaec6659a6534621ec8e3aaaa6f976210\"\u003e\u003ccode\u003e67ed74f\u003c/code\u003e\u003c/a\u003e Bump dev dependencies (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4972\"\u003e#4972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3abd481097b54d87b574ac7ea593c3f40938a84d\"\u003e\u003ccode\u003e3abd481\u003c/code\u003e\u003c/a\u003e Upgrade mypy to version 1.20.2 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2b8725dfcac4f21d4d93cc0cc3a64a33af08f890\"\u003e\u003ccode\u003e2b8725d\u003c/code\u003e\u003c/a\u003e Drop support for EOL PyPy3.10 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2944b2a0a6c573f5548a39cfd17196f98ee21b33\"\u003e\u003ccode\u003e2944b2a\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003esetup-chrome\u003c/code\u003e and \u003ccode\u003esetup-firefox\u003c/code\u003e to fix warnings (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `decorator` from 5.2.1 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/micheles/decorator/blob/master/CHANGES.md\"\u003edecorator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2026-05-18)\u003c/h2\u003e\n\u003cp\u003eAdded license SPDX identifier to pyproject.toml (reported by\nChristian Lackas).\u003c/p\u003e\n\u003ch2\u003e5.3.0 (2026-05-17)\u003c/h2\u003e\n\u003cp\u003eAdded official support for Python 3.14 (thanks to Hugo van Kemenade,\nDavid Cain and the GitHub user bersbersbers).\nFixed a bug with \u0026quot;return await\u0026quot; contributed by Kadir Can Ozden.\nMoved decorator.py to a package structure (\u003ccode\u003edecorator/__init__.py\u003c/code\u003e) and\nadded a stub file (\u003ccode\u003edecorator/__init__.pyi\u003c/code\u003e) contributed by Marco Gorelli.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/426e9e35d563ffe356e54bd0f970d153b8f25370\"\u003e\u003ccode\u003e426e9e3\u003c/code\u003e\u003c/a\u003e Bumped the version to 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/062ff0e0c33733f2148a5590d118a8570df846d5\"\u003e\u003ccode\u003e062ff0e\u003c/code\u003e\u003c/a\u003e Fixed the dependency on setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/086ff5d95d4dc550117c12647a4427d70bf8833d\"\u003e\u003ccode\u003e086ff5d\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/5807a83ead31f0de5303fa950ddea49d850d7355\"\u003e\u003ccode\u003e5807a83\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/093aced11439251e496b47a9a9369501075e8d1a\"\u003e\u003ccode\u003e093aced\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/e9ced7e63ad9502b3e2a3e3db5f5f1ccc16c5fd6\"\u003e\u003ccode\u003ee9ced7e\u003c/code\u003e\u003c/a\u003e Added license SPDX\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/b3e82ddc04e8d0c18c51eecb30b4a59aee5aac1d\"\u003e\u003ccode\u003eb3e82dd\u003c/code\u003e\u003c/a\u003e Fixed CHANGES.md [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/f1ce8da8522193421436c368849afe886666b4e5\"\u003e\u003ccode\u003ef1ce8da\u003c/code\u003e\u003c/a\u003e Doc fix [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/c924d7c6aa2e47a0627706c385101ff8d558d091\"\u003e\u003ccode\u003ec924d7c\u003c/code\u003e\u003c/a\u003e Updated supported versions [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/8b83e8cca35f5c773654ce4ae89b4e3f84f430d3\"\u003e\u003ccode\u003e8b83e8c\u003c/code\u003e\u003c/a\u003e Fixed CHANGES [ci skip]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/micheles/decorator/compare/5.2.1...5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.18.1 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jedi` from 0.19.2 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/davidhalter/jedi/blob/master/CHANGELOG.rst\"\u003ejedi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.20.0 (2026-05-02)\n+++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.14 support\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.8 and 3.9\u003c/li\u003e\n\u003cli\u003eUpgraded Typeshed\u003c/li\u003e\n\u003cli\u003eBetter support for Final/ClassVar\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e__new__\u003c/code\u003e is now also recognized as a signature and TypeVar inference\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003eSelf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003eTypeAlias\u003c/code\u003e, generics for \u003ccode\u003etype[...]\u003c/code\u003e and \u003ccode\u003etuple[...]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/3102215478fe07b965dcd8221c17436d1dd7e8ac\"\u003e\u003ccode\u003e3102215\u003c/code\u003e\u003c/a\u003e Move the type parameter syntax tests so that it works for all versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/1b37f2eb946e825cbc2887c6dd34ee046f0ae68c\"\u003e\u003ccode\u003e1b37f2e\u003c/code\u003e\u003c/a\u003e Prepare for the 0.20.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/8e4df5cc0ec511db1af6d358182b1fb7c1e0cbff\"\u003e\u003ccode\u003e8e4df5c\u003c/code\u003e\u003c/a\u003e Make sure the new generic syntax does not fail with latest parso\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/4c9dbcca0329454b638bfa32e2825bedcfdf0eac\"\u003e\u003ccode\u003e4c9dbcc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/davidhalter/jedi/issues/2098\"\u003e#2098\u003c/a\u003e from davidhalter/updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/fedb1a5eb0d74446f6d431db2920ab5f1e1d5b18\"\u003e\u003ccode\u003efedb1a5\u003c/code\u003e\u003c/a\u003e Fix 3.10 tests in one more case\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/87e782f9c82de7297e243a770ac8888570bffa8e\"\u003e\u003ccode\u003e87e782f\u003c/code\u003e\u003c/a\u003e Fix flake8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/cd52d982e10ac54f0ebef06e0bd414f79589998a\"\u003e\u003ccode\u003ecd52d98\u003c/code\u003e\u003c/a\u003e Fixes to get the tests passing for 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/d0b11806d4d1def377234bc2dc512992c997a977\"\u003e\u003ccode\u003ed0b1180\u003c/code\u003e\u003c/a\u003e Finally make tests work for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/8520a9958b489bd8d30cf20b4d2798f7289aab45\"\u003e\u003ccode\u003e8520a99\u003c/code\u003e\u003c/a\u003e Implement support for TypeVar inference for \u003cstrong\u003enew\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/jedi/commit/55e5f0cb92dd92d5bdc80ecfc38664a1afd921d1\"\u003e\u003ccode\u003e55e5f0c\u003c/code\u003e\u003c/a\u003e Implement new-style unions with TypeVars\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/davidhalter/jedi/compare/v0.19.2...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib-inline` from 0.2.1 to 0.2.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/e6e197523ecfabfff1d976e5b6958c3ede948ccb\"\u003e\u003ccode\u003ee6e1975\u003c/code\u003e\u003c/a\u003e release 0.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/0aac2e223483ffbfb5a6076d8c2ca83545cca440\"\u003e\u003ccode\u003e0aac2e2\u003c/code\u003e\u003c/a\u003e Bump the actions group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/65\"\u003e#65\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/6eb2bd89dc8d4d6678478c6b2ec15be7b20d3374\"\u003e\u003ccode\u003e6eb2bd8\u003c/code\u003e\u003c/a\u003e Bump the actions group across 1 directory with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/631d7dd26be1287f64c5bd4bbb84888903e419b0\"\u003e\u003ccode\u003e631d7dd\u003c/code\u003e\u003c/a\u003e Zizmor hardening (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/66\"\u003e#66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/8d45c8fc427d39750751bdaa0ffe5abc8e30cd50\"\u003e\u003ccode\u003e8d45c8f\u003c/code\u003e\u003c/a\u003e Zizmor hardening\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/f830b37c728146dca4f947de6cbdb420ee9c69fb\"\u003e\u003ccode\u003ef830b37\u003c/code\u003e\u003c/a\u003e Specify BSD license and add license files (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/62\"\u003e#62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/e3b8bb10d275d5caa97d8d1b584d48797e494de4\"\u003e\u003ccode\u003ee3b8bb1\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 in CI pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/c783ae72ed581f24fa136f34e6df4f6e99c3f785\"\u003e\u003ccode\u003ec783ae7\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 in CI pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/8ac056c5730a6adbc9dd5e049b85163ba6a09a28\"\u003e\u003ccode\u003e8ac056c\u003c/code\u003e\u003c/a\u003e Update workflow to include matplotlib for tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/0cc8a2e91306c94e36f0a9cd8e31a38299b1c126\"\u003e\u003ccode\u003e0cc8a2e\u003c/code\u003e\u003c/a\u003e Use valid SPDX ID\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/matplotlib-inline/compare/0.2.1...0.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.0 to 26.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/26.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parso` from 0.8.6 to 0.8.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/davidhalter/parso/blob/master/CHANGELOG.rst\"\u003eparso's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.8.7 (2026-05-02)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd PEP 695 type parameter syntax\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/bfe30584415cde2e5a686512c2b109e1d06da3b6\"\u003e\u003ccode\u003ebfe3058\u003c/code\u003e\u003c/a\u003e Prepare the release 0.8.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/a36a4216a4e295141bc382e0a60a2074293e78cd\"\u003e\u003ccode\u003ea36a421\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/davidhalter/parso/issues/237\"\u003e#237\u003c/a\u003e from darki73/feat/pep695-type-params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/5b63e63911e399a742d37d221d192d46736a1c31\"\u003e\u003ccode\u003e5b63e63\u003c/code\u003e\u003c/a\u003e feat: PEP 695 type parameter syntax for Python 3.12+\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/davidhalter/parso/compare/v0.8.6...v0.8.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li...\n\n_Description has been truncated_","html_url":"https://github.com/cisco-en-programmability/catalystcentersdk/pull/32","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-en-programmability%2Fcatalystcentersdk/issues/32","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/32/packages"}},{"old_version":"3.1.0","new_version":"3.1.1","update_type":"patch","path":null,"pr_created_at":"2026-06-08T21:36:45.000Z","version_change":"3.1.0 → 3.1.1","issue":{"uuid":"4616816099","node_id":"PR_kwDOPFo1N87kG1rg","number":228,"state":"open","title":":dependabot: uv(deps): Bump the all-uv group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-08T21:36:45.000Z","updated_at":"2026-06-08T21:39:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":":dependabot: uv(deps): Bump","group_name":"all-uv","update_count":4,"packages":[{"name":"boto3","old_version":"1.43.14","new_version":"1.43.25","repository_url":"https://github.com/boto/boto3"},{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"optuna","old_version":"4.8.0","new_version":"4.9.0","repository_url":"https://github.com/optuna/optuna"},{"name":"moto","old_version":"5.2.1","new_version":"5.2.2","repository_url":"https://github.com/getmoto/moto"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-uv group with 4 updates in the / directory: [boto3](https://github.com/boto/boto3), [snowballstemmer](https://github.com/snowballstem/snowball), [optuna](https://github.com/optuna/optuna) and [moto](https://github.com/getmoto/moto).\n\nUpdates `boto3` from 1.43.14 to 1.43.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7cb97d3726d5b1dde7f5e867da7252c73ebe8511\"\u003e\u003ccode\u003e7cb97d3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/100e4d14cc2ef5b728e3381210ff48cd08f56596\"\u003e\u003ccode\u003e100e4d1\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/74bfd8111fba157d760d47b0d56263210e9ad43a\"\u003e\u003ccode\u003e74bfd81\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b2b302b072044a376279adcb7a4791f424027ad1\"\u003e\u003ccode\u003eb2b302b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0622bb598bfed6eba5df0dc2908f2406f1d2b914\"\u003e\u003ccode\u003e0622bb5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/02fd3ca9aab5ae0e8e1e9e88e80b56e5a3e3755c\"\u003e\u003ccode\u003e02fd3ca\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fcaf9ff50cea0eff6ce965e97fc4b23c941d1cb5\"\u003e\u003ccode\u003efcaf9ff\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f2106e0d34cb87a89f066f06373d337da503b0d5\"\u003e\u003ccode\u003ef2106e0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5f983267ce19c9461f9da5ef19105b46879a440e\"\u003e\u003ccode\u003e5f98326\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d7e5b7c20dfad5465df92d55541638ecfc09e981\"\u003e\u003ccode\u003ed7e5b7c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.23\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.14...1.43.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.1.0 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `optuna` from 4.8.0 to 4.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/optuna/optuna/releases\"\u003eoptuna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.9.0\u003c/h2\u003e\n\u003cp\u003eThis is the release note of \u003ca href=\"https://github.com/optuna/optuna/milestone/74?closed=1\"\u003ev4.9.0\u003c/a\u003e.\u003c/p\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003ch3\u003eEnhance Multi-Objective Constrained Parallel Optimization in GPSampler\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/sawa3030\"\u003e\u003ccode\u003e@​sawa3030\u003c/code\u003e\u003c/a\u003e introduces parallelization enhancements to \u003ccode\u003eGPSampler\u003c/code\u003e, leveraging the \u003cstrong\u003eKriging Believer\u003c/strong\u003e approach for constrained and multi-objective optimization (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6481\"\u003e#6481\u003c/a\u003e). This improvement allows for more efficient exploration when multiple trials are running concurrently.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe GP surrogate is updated by assigning temporary objective function values ​​to the running trials.\u003c/p\u003e\n\u003cp\u003eFor more technical details and benchmarks, please check out our blog post: \u003ca href=\"https://medium.com/optuna/improving-optunas-gpsampler-parallelization-by-considering-running-trials-10d42aeb5d49\"\u003eImproving Optuna’s GPSampler Parallelization by Considering Running Trials\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eDeprecate Several Features\u003c/h3\u003e\n\u003cp\u003eThe following features are deprecated in v4.9.0 and scheduled for removal in v6.0.0.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eoptuna\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSeveral arguments in \u003ccode\u003eTPESampler\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6635\"\u003e#6635\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eprior_weight\u003c/code\u003e, \u003ccode\u003econsider_magic_clip\u003c/code\u003e, \u003ccode\u003econsider_endpoints\u003c/code\u003e, \u003ccode\u003egamma\u003c/code\u003e, \u003ccode\u003eweights\u003c/code\u003e, \u003ccode\u003ehyperopt_parameters\u003c/code\u003e: These internal parameters are being deprecated to simplify the interface, as the default settings are optimal for most use cases.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ewarn_independent_sampling\u003c/code\u003e: Deprecated because \u003ccode\u003eTPESampler\u003c/code\u003e now robustly supports both independent and joint sampling, making this warning obsolete.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecategorical_distance_func\u003c/code\u003e: This advanced feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ex0\u003c/code\u003e and \u003ccode\u003esigma0\u003c/code\u003e options in \u003ccode\u003eCmaEsSampler\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6624\"\u003e#6624\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThese options have been deprecated because they require a deep understanding of \u003ccode\u003eCmaEsSampler\u003c/code\u003e's internals to be configured effectively.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eoptuna.terminator\u003c/code\u003e module\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6668\"\u003e#6668\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eRetryFailedTrialCallback\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6670\"\u003e#6670\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis class has been renamed to \u003ccode\u003eRetryHeartbeatStaleTrialCallback\u003c/code\u003e to better reflect its behavior and avoid confusion with general trial retries (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6085\"\u003e#6085\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eoptuna.integration\u003c/code\u003e module\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eoptuna.integration\u003c/code\u003e module currently acts as a shortcut to the external \u003ccode\u003eoptuna_integration\u003c/code\u003e package for backward compatibility. Please import directly from the \u003ccode\u003eoptuna_integration\u003c/code\u003e package going forward.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eoptuna-integration\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePyCmaSampler\u003c/code\u003e: Please use Optuna's native \u003ccode\u003eCmaEsSampler\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCometCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMLflowCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTensorBoardCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTrackioCallback\u003c/code\u003e: This feature will be migrated to OptunaHub in the future.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWeightsAndBiasesCallback\u003c/code\u003e: This class has already been migrated to OptunaHub.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBreaking Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003ePyCmaSampler\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/276\"\u003eoptuna/optuna-integration#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation message for \u003ccode\u003eCometCallback\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/280\"\u003eoptuna/optuna-integration#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation message for MLflowCallback (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/281\"\u003eoptuna/optuna-integration#281\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/4db42e31c24b200e52595df9d4c00e2cdeefea2b\"\u003e\u003ccode\u003e4db42e3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6691\"\u003e#6691\u003c/a\u003e from c-bata/backport-v4.9-attestations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/6a15cf0906c5e92e9dbe70d3ee320eb3db5d08b7\"\u003e\u003ccode\u003e6a15cf0\u003c/code\u003e\u003c/a\u003e Add attestations: false to fix release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/a592e6c0d6604fa678201ecddbcc53a0d232cc65\"\u003e\u003ccode\u003ea592e6c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6684\"\u003e#6684\u003c/a\u003e from c-bata/bump-up-to-v4.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/490cfd6de52377acbec1d6f709b0189026575af2\"\u003e\u003ccode\u003e490cfd6\u003c/code\u003e\u003c/a\u003e Bump up to version number v4.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/6135d5469152a3f14a41202d2c065e823f3dd24c\"\u003e\u003ccode\u003e6135d54\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6651\"\u003e#6651\u003c/a\u003e from nabenabe0928/add-brute-force-info-to-grid-sampler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/c41ec2df70ba2c4957aa96f524733d1e488d9e85\"\u003e\u003ccode\u003ec41ec2d\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into add-brute-force-info-to-g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/f845a8fccfc0c6d64d419b27ab3076bb1b7caf32\"\u003e\u003ccode\u003ef845a8f\u003c/code\u003e\u003c/a\u003e Fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/574749e6a8ae2b93fc0a61908ad90da92495e8e5\"\u003e\u003ccode\u003e574749e\u003c/code\u003e\u003c/a\u003e Fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/af7fe8b01791a8ddbb368ce9e77d922296da30b1\"\u003e\u003ccode\u003eaf7fe8b\u003c/code\u003e\u003c/a\u003e Add note to best trial\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/b200bfbb312595c07d0e0c1265754096843091af\"\u003e\u003ccode\u003eb200bfb\u003c/code\u003e\u003c/a\u003e Update the NSGA-III doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/optuna/optuna/compare/v4.8.0...v4.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `moto` from 5.2.1 to 5.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getmoto/moto/blob/master/CHANGELOG.md\"\u003emoto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.2.2\u003c/h2\u003e\n\u003cp\u003eDocker Digest for 5.2.2: \u003cem\u003esha256:d8ae5edc2bf080e7e4c13f9bd4b29b53ac3b4427e92956318db3dbe23ec43eb7\u003c/em\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNew Methods:\n    * DS:\n        * disable_radius()\n        * enable_radius()\n\u003cpre\u003e\u003ccode\u003e* KinesisAnalyticsV2:\n    * untag_resource()\n\n* Logs:\n    * start_live_tail()\n\n* SESv2:\n    * update_contact()\n    * update_contact_list()\n\n* SWF:\n    * tag_resource()\n    * untag_resource()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eMiscellaneous:\u003cbr /\u003e\n* ACM: import_certificate() now accepts certificates without a CN\u003cbr /\u003e\n* ACM: request_certificate() now preserves the default options when not all are provided\u003cbr /\u003e\n* CloudFormation: Created Lambda resources now take the \u003ccode\u003euse_docker\u003c/code\u003e-configuration into account\u003cbr /\u003e\n* CloudFormation: update_stack_instances() now validates that a StackInstance exists\u003cbr /\u003e\n* Events: create_partner_event_source() now returns the EventSourceArn-attribute\u003cbr /\u003e\n* Route53: list_resource_record_sets() no longer returns a TTL for aliases\u003cbr /\u003e\n* S3: completed_multipart_upload() is now compatible with external tools like PyArrow\u003cbr /\u003e\n* S3: get_object() now supports all Response* headers\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/837595545cc4a4bb8fede2cff84b2b2373443981\"\u003e\u003ccode\u003e8375955\u003c/code\u003e\u003c/a\u003e Pre-Release: Up Version Number\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/325f8599bf7c9cdc3dfbf92ff911616e1955bb3f\"\u003e\u003ccode\u003e325f859\u003c/code\u003e\u003c/a\u003e Prepare release 5.2.2 (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10059\"\u003e#10059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/a3ced98f8ce0e57eab3d29925630708c5d0e654d\"\u003e\u003ccode\u003ea3ced98\u003c/code\u003e\u003c/a\u003e S3: get_object() now honors ResponseContentDisposition etc headers (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10057\"\u003e#10057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/d0cf348a92ded5e372380e47ca8f0ea1f43386bd\"\u003e\u003ccode\u003ed0cf348\u003c/code\u003e\u003c/a\u003e ACM: support certs without CN (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/9912\"\u003e#9912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/cbd409ae21d1537f958ffaa2d9a687fd0245c61b\"\u003e\u003ccode\u003ecbd409a\u003c/code\u003e\u003c/a\u003e Bump the go-deps group in /other_langs/tests_go with 6 updates (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10054\"\u003e#10054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/f47b7b19cdf1b5d511e395c2a7ddd4488c92ef21\"\u003e\u003ccode\u003ef47b7b1\u003c/code\u003e\u003c/a\u003e Bump the java-deps group in /other_langs/tests_java with 5 updates (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10053\"\u003e#10053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/33c406f384e8764642b7414e8272ac03c23d2603\"\u003e\u003ccode\u003e33c406f\u003c/code\u003e\u003c/a\u003e Bump ruby/setup-ruby from 1.306.0 to 1.310.0 (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10052\"\u003e#10052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/be0341c15c0a785ec5dec00270b3eeef40e61922\"\u003e\u003ccode\u003ebe0341c\u003c/code\u003e\u003c/a\u003e S3: fix CompleteMultipartUpload root level XML tag (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10056\"\u003e#10056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/0f171e36dc61aaf0a1f123f36c0fa635461af287\"\u003e\u003ccode\u003e0f171e3\u003c/code\u003e\u003c/a\u003e chore: update SSM default parameters (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10051\"\u003e#10051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getmoto/moto/commit/2329a6267b854c0824757739b0b46766ce0e277d\"\u003e\u003ccode\u003e2329a62\u003c/code\u003e\u003c/a\u003e chore: update EC2 Instance Offerings (\u003ca href=\"https://redirect.github.com/getmoto/moto/issues/10048\"\u003e#10048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getmoto/moto/compare/5.2.1...5.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ministryofjustice/cica-review-case-documents-airflow/pull/228","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ministryofjustice%2Fcica-review-case-documents-airflow/issues/228","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/228/packages"}},{"old_version":"3.1.0","new_version":"3.1.1","update_type":"patch","path":null,"pr_created_at":"2026-06-04T02:09:14.000Z","version_change":"3.1.0 → 3.1.1","issue":{"uuid":"4585174944","node_id":"PR_kwDOPfXSXM7ifpQ0","number":377,"state":"closed","title":"Bump snowballstemmer from 3.1.0 to 3.1.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-04T02:09:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-04T02:09:14.000Z","updated_at":"2026-06-04T02:09:35.000Z","time_to_close":13,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.1.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/gagan-chawla/aiohttp/pull/377","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gagan-chawla%2Faiohttp/issues/377","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/377/packages"}},{"old_version":"3.1.0","new_version":"3.1.1","update_type":"patch","path":null,"pr_created_at":"2026-06-03T22:14:33.000Z","version_change":"3.1.0 → 3.1.1","issue":{"uuid":"4584059237","node_id":"PR_kwDOAjat187ib8yN","number":8190,"state":"open","title":"Bump snowballstemmer from 3.1.0 to 3.1.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-03T22:14:33.000Z","updated_at":"2026-06-03T22:28:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.1.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/microsoft/Qcodes/pull/8190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FQcodes/issues/8190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8190/packages"}},{"old_version":"3.0.1","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2026-06-03T22:04:11.000Z","version_change":"3.0.1 → 3.1.0","issue":{"uuid":"4584000717","node_id":"PR_kwDOKP9uoc7ibwSy","number":181,"state":"closed","title":"ci: Bump the ci group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["edgarrmondragon"],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-06-07T22:00:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T22:04:11.000Z","updated_at":"2026-06-07T22:01:06.000Z","time_to_close":345400,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"ci: Bump","group_name":"ci","update_count":11,"packages":[{"name":"tox","old_version":"4.50.3","new_version":"4.55.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"tox-uv","old_version":"1.33.4","new_version":"1.35.2","repository_url":"https://github.com/tox-dev/tox-uv"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"docutils","old_version":"0.22.4","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.15","new_version":"3.17","repository_url":"https://github.com/kjd/idna"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"mdit-py-plugins","old_version":"0.5.0","new_version":"0.6.1","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"5.0.0","new_version":"5.1.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.8.3","new_version":"2.8.4","repository_url":"https://github.com/facelessuser/soupsieve"}],"path":null,"ecosystem":"pip"},"body":"Bumps the ci group with 11 updates in the /requirements directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [tox](https://github.com/tox-dev/tox) | `4.50.3` | `4.55.0` |\n| [tox-uv](https://github.com/tox-dev/tox-uv) | `1.33.4` | `1.35.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.4` | `0.23` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.17` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.5.0` | `0.6.1` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `5.0.0` | `5.1.0` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.3` | `2.8.4` |\n\n\nUpdates `tox` from 4.50.3 to 4.55.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.55.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👷 ci(schemastore): sync fork before pushing branch by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3942\"\u003etox-dev/tox#3942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Also pass \u003ccode\u003eTERMINFO\u003c/code\u003e when in an interactive shell by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3946\"\u003etox-dev/tox#3946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): skip constrain_package_deps when constraints is set by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3948\"\u003etox-dev/tox#3948\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.54.0...4.55.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.54.0...4.55.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.54.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(conftest): strip broken nspkg.pth files under py3.15 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3937\"\u003etox-dev/tox#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(packaging): declare tox.pytest deps via a testing extra by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3940\"\u003etox-dev/tox#3940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(schema): cover every replace form in the TOML schema by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3941\"\u003etox-dev/tox#3941\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.1...4.54.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.1...4.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(security): harden user-facing logs and untrusted inputs by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3924\"\u003etox-dev/tox#3924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(type): correct argparse override signatures for ty 0.0.33 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3932\"\u003etox-dev/tox#3932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: allow deps arrays in TOML schema by \u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.0...4.53.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.0...4.53.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(toml): allow bare range/labeled dicts in env_list by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3923\"\u003etox-dev/tox#3923\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.1...4.53.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.1...4.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003euse normalize_isa for architecture factor matching by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3919\"\u003etox-dev/tox#3919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): invalidate install cache on resolution env var changes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3921\"\u003etox-dev/tox#3921\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFeatures - 4.55.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically pass the TERMINFO environment variable to tox subprocesses if the output is a TTY. This variable is used\nby Ghostty to communicate terminal capabilities to programs. (:issue:\u003ccode\u003e3946\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.55.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eWhen the \u003ccode\u003econstraints\u003c/code\u003e configuration option is set, \u003ccode\u003econstrain_package_deps\u003c/code\u003e and \u003ccode\u003euse_frozen_constraints\u003c/code\u003e are\nnow ignored. Previously, both the user-provided constraints file and the auto-generated constraints file were passed\nto pip during \u003ccode\u003einstall_package_deps\u003c/code\u003e, which could cause resolver conflicts when the same package appeared in both\nfiles - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3945\u003c/code\u003e) (:issue:\u003ccode\u003e3945\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.54.0 (2026-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare the runtime dependencies of the \u003ccode\u003etox.pytest\u003c/code\u003e plugin (\u003ccode\u003epytest\u003c/code\u003e, \u003ccode\u003edevpi-process\u003c/code\u003e and \u003ccode\u003epytest-mock\u003c/code\u003e)\nunder a new \u003ccode\u003etesting\u003c/code\u003e extra, so plugin authors can pull them in via \u003ccode\u003etox[testing]\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\n(:issue:\u003ccode\u003e3938\u003c/code\u003e, :issue:\u003ccode\u003e3940\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExtend the generated TOML schema to cover every \u003ccode\u003ereplace\u003c/code\u003e table form (\u003ccode\u003eenv\u003c/code\u003e, \u003ccode\u003eref\u003c/code\u003e, \u003ccode\u003eposargs\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e,\n\u003ccode\u003eif\u003c/code\u003e), including conditional replacements used inside \u003ccode\u003ecommands\u003c/code\u003e. A guard test asserts the schema stays in sync\nwith the loader implementation so future replace types cannot be added without a corresponding schema entry.\n(:issue:\u003ccode\u003e3939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.1 (2026-05-02)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.53.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHardening pass on user-facing logging and config parsing:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMask secret-looking \u003ccode\u003e--key=value\u003c/code\u003e flag values in command logs (terminal warnings, \u003ccode\u003e.tox/\u0026lt;env\u0026gt;/log/*.log\u003c/code\u003e, and\n\u003ccode\u003eOutcome\u003c/code\u003e \u003ccode\u003e__repr__\u003c/code\u003e) using the same keyword regex previously applied to environment variable values.\u003c/li\u003e\n\u003cli\u003eResolve PEP 723 \u003ccode\u003escript\u003c/code\u003e paths and reject any that escape \u003ccode\u003etox_root\u003c/code\u003e; cap the script read at 5 MiB so a symlink\nto \u003ccode\u003e/dev/zero\u003c/code\u003e cannot exhaust memory.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e of a constructed \u003ccode\u003eLiteral[...]\u003c/code\u003e string in the CLI parser with a direct\n\u003ccode\u003eLiteral[tuple(action.choices)]\u003c/code\u003e subscript.\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003etimeout=30\u003c/code\u003e to \u003ccode\u003eurlopen\u003c/code\u003e when fetching a remote requirements file so a slow or unresponsive mirror cannot\nhang \u003ccode\u003etox\u003c/code\u003e indefinitely. (:issue:\u003ccode\u003e3924\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/928b7f06663aac5966b78375ef0d943e219e03d7\"\u003e\u003ccode\u003e928b7f0\u003c/code\u003e\u003c/a\u003e release 4.55.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/a43427fa389d4f3deaa462bebc86b81a0ab87e37\"\u003e\u003ccode\u003ea43427f\u003c/code\u003e\u003c/a\u003e 🐛 fix(pip): skip constrain_package_deps when constraints is set (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3948\"\u003e#3948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/27b68b39e6db707909311e654fcb6aa4d626cccf\"\u003e\u003ccode\u003e27b68b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3947\"\u003e#3947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4e6627ce0c06262760f83f77c9e989bb34c8f101\"\u003e\u003ccode\u003e4e6627c\u003c/code\u003e\u003c/a\u003e feat: Also pass \u003ccode\u003eTERMINFO\u003c/code\u003e when in an interactive shell (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3946\"\u003e#3946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/10c431cccae092446f61d1bf9483b00179724b2e\"\u003e\u003ccode\u003e10c431c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3943\"\u003e#3943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/c86e876399ca54055d54cc0dc4b21b87b910c9b5\"\u003e\u003ccode\u003ec86e876\u003c/code\u003e\u003c/a\u003e 👷 ci(schemastore): sync fork before pushing branch (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3942\"\u003e#3942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1f1fcc7a53665a827d8a304190696c6926ebb2eb\"\u003e\u003ccode\u003e1f1fcc7\u003c/code\u003e\u003c/a\u003e release 4.54.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/b35c8eedaf94906ed0e7938c7526dced550e6fa0\"\u003e\u003ccode\u003eb35c8ee\u003c/code\u003e\u003c/a\u003e 🐛 fix(schema): cover every replace form in the TOML schema (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3941\"\u003e#3941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/6eb5c4f5eec439b3924d6adb3d9d16ea7fc88a20\"\u003e\u003ccode\u003e6eb5c4f\u003c/code\u003e\u003c/a\u003e ✨ feat(packaging): declare tox.pytest deps via a testing extra (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3940\"\u003e#3940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1ad47ddaab21c891f136a9627d1c6cdb6ea655d7\"\u003e\u003ccode\u003e1ad47dd\u003c/code\u003e\u003c/a\u003e 🧪 test(conftest): strip broken nspkg.pth files under py3.15 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3937\"\u003e#3937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.50.3...4.55.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox-uv` from 1.33.4 to 1.35.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox-uv/releases\"\u003etox-uv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.35.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHonor constraints opt for all packages by \u003ca href=\"https://github.com/stephenfin\"\u003e\u003ccode\u003e@​stephenfin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/332\"\u003etox-dev/tox-uv#332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(lock): honor --recreate in uv-venv-lock-runner by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/338\"\u003etox-dev/tox-uv#338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stephenfin\"\u003e\u003ccode\u003e@​stephenfin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/332\"\u003etox-dev/tox-uv#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.35.1...1.35.2\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.35.1...1.35.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.35.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(lock-runner): respect UV_FROZEN env var and --frozen in uv_sync_flags by \u003ca href=\"https://github.com/alexholtz\"\u003e\u003ccode\u003e@​alexholtz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/327\"\u003etox-dev/tox-uv#327\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexholtz\"\u003e\u003ccode\u003e@​alexholtz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/327\"\u003etox-dev/tox-uv#327\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.35.0...1.35.1\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.35.0...1.35.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.35.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd machine and architecture handling to version spec by \u003ca href=\"https://github.com/griels\"\u003e\u003ccode\u003e@​griels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/321\"\u003etox-dev/tox-uv#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(installer): invalidate install cache on UV_* env var changes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/325\"\u003etox-dev/tox-uv#325\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/griels\"\u003e\u003ccode\u003e@​griels\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/321\"\u003etox-dev/tox-uv#321\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.34.0...1.35.0\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.34.0...1.35.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.34.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/317\"\u003etox-dev/tox-uv#317\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(runner): add PEP 723 inline script metadata support by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/pull/319\"\u003etox-dev/tox-uv#319\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.33.4...1.34.0\"\u003ehttps://github.com/tox-dev/tox-uv/compare/1.33.4...1.34.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/595721d2a0c8695aeb9bb59e3042a79d2dff2b90\"\u003e\u003ccode\u003e595721d\u003c/code\u003e\u003c/a\u003e 🐛 fix(lock): honor --recreate in uv-venv-lock-runner (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/1026808b9d98b5c1f9d92e84b5cccfde23a01bed\"\u003e\u003ccode\u003e1026808\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/3f7ea4d7f0495f32d95a3b7f67ddc164b85b17bd\"\u003e\u003ccode\u003e3f7ea4d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/f976fc1a0548d4b4544a87e637c0fc31f6d14372\"\u003e\u003ccode\u003ef976fc1\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/c0fabe3f6c4627869552ae74a53721aaf998ce02\"\u003e\u003ccode\u003ec0fabe3\u003c/code\u003e\u003c/a\u003e Honor constraints opt for all packages (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/d4aa96d0a0583e08a45ccfc6f9a08f89425a38ea\"\u003e\u003ccode\u003ed4aa96d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/ac785195b51a3a1835702925d4150bba74134ccd\"\u003e\u003ccode\u003eac78519\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/8bab9b8484aefa61c220e38e36b497af0f590130\"\u003e\u003ccode\u003e8bab9b8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/328\"\u003e#328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/8b0497ed211589f363d7e477d3d426cca6a839f9\"\u003e\u003ccode\u003e8b0497e\u003c/code\u003e\u003c/a\u003e fix(lock-runner): respect UV_FROZEN env var and --frozen in uv_sync_flags (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/327\"\u003e#327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox-uv/commit/ad30d57a18d72e2b908c388a85f6ebfa3a1a58a4\"\u003e\u003ccode\u003ead30d57\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox-uv/issues/324\"\u003e#324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox-uv/compare/1.33.4...1.35.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.4.22 to 2026.5.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.05.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.4 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.15 to 3.17\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\nas arguments or on standard input, with options to select A-label\nor U-label output and control error handling.\u003c/li\u003e\n\u003cli\u003eRaise the minimum supported Python version to 3.9\u003c/li\u003e\n\u003cli\u003eVarious code quality improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f48619c4cea6859b938d560fdd9feb898e678567\"\u003e\u003ccode\u003ef48619c\u003c/code\u003e\u003c/a\u003e Release 3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7421ba8003227f816142ab40178e3a7d204e6847\"\u003e\u003ccode\u003e7421ba8\u003c/code\u003e\u003c/a\u003e Pre-release 3.17rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/22ebb73b164081f209449b50162eb7ce086e96a4\"\u003e\u003ccode\u003e22ebb73\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/251\"\u003e#251\u003c/a\u003e from kjd/structure-optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2a7ac0a58c788d50112a5003af545a83807fb108\"\u003e\u003ccode\u003e2a7ac0a\u003c/code\u003e\u003c/a\u003e Drop redundant parallel-arrays comment from uts46data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/354eee9850a7b2962b65ae02010f7ebd9c99b7ed\"\u003e\u003ccode\u003e354eee9\u003c/code\u003e\u003c/a\u003e Apply ruff format to uts46data.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8c34ffcab603b4a7a727d4e286b1f3342813281d\"\u003e\u003ccode\u003e8c34ffc\u003c/code\u003e\u003c/a\u003e Refactor uts46data into parallel arrays\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1189629e8a319f7c2b4678b5716c180ebd97de03\"\u003e\u003ccode\u003e1189629\u003c/code\u003e\u003c/a\u003e Range-encode joining_types for compact representation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f90b87adc6b6b2a591dfc7fb3f8e47870dc81722\"\u003e\u003ccode\u003ef90b87a\u003c/code\u003e\u003c/a\u003e Generic length limit for functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ffd28be164dfbd3ebca8b3396e39d191f4909b\"\u003e\u003ccode\u003ed6ffd28\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/247\"\u003e#247\u003c/a\u003e from kjd/release-3.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6d1a0de52a8b4690f1b2a89829aa85ff1de3635a\"\u003e\u003ccode\u003e6d1a0de\u003c/code\u003e\u003c/a\u003e Release 3.16\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.15...v3.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-it-py` from 4.0.0 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emake_fence_rule()\u003c/code\u003e factory for configurable fence markers by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/394\"\u003eexecutablebooks/markdown-it-py#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 RELEASE v4.2.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/395\"\u003eexecutablebooks/markdown-it-py#395\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.1.0...v4.2.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v4.1.0...v4.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e--stdin\u003c/code\u003e option to CLI by \u003ca href=\"https://github.com/mcepl\"\u003e\u003ccode\u003e@​mcepl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/379\"\u003eexecutablebooks/markdown-it-py#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md and copilot-setup-steps workflow by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/380\"\u003eexecutablebooks/markdown-it-py#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add typing to Scanner by \u003ca href=\"https://github.com/Alunderin\"\u003e\u003ccode\u003e@​Alunderin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/382\"\u003eexecutablebooks/markdown-it-py#382\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Fix quadratic complexity in \u003ccode\u003efragments_join\u003c/code\u003e / \u003ccode\u003etext_join\u003c/code\u003e by \u003ca href=\"https://github.com/petricevich\"\u003e\u003ccode\u003e@​petricevich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/389\"\u003eexecutablebooks/markdown-it-py#389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨Allow plugins to register inline terminator characters by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/391\"\u003eexecutablebooks/markdown-it-py#391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003egfm-like2\u003c/code\u003e preset with task lists, alerts, and single-tilde strikethrough by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/388\"\u003eexecutablebooks/markdown-it-py#388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit hooks by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/392\"\u003eexecutablebooks/markdown-it-py#392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 RELEASE v4.1.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/393\"\u003eexecutablebooks/markdown-it-py#393\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mcepl\"\u003e\u003ccode\u003e@​mcepl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/379\"\u003eexecutablebooks/markdown-it-py#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/380\"\u003eexecutablebooks/markdown-it-py#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Alunderin\"\u003e\u003ccode\u003e@​Alunderin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/382\"\u003eexecutablebooks/markdown-it-py#382\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petricevich\"\u003e\u003ccode\u003e@​petricevich\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/389\"\u003eexecutablebooks/markdown-it-py#389\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.0 - 2026-05-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emake_fence_rule()\u003c/code\u003e factory for configurable fence markers in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/394\"\u003e#394\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.0 - 2025-05-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003egfm-like2\u003c/code\u003e preset with task lists, alerts, and single-tilde strikethrough core plugins in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/388\"\u003e#388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Allow plugins to register inline terminator characters in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/391\"\u003e#391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Fix quadratic complexity in \u003ccode\u003efragments_join\u003c/code\u003e / \u003ccode\u003etext_join\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/389\"\u003e#389\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/petricevich\"\u003e\u003ccode\u003e@​petricevich\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Add \u003ccode\u003e--stdin\u003c/code\u003e option to CLI for reading Markdown from standard input in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/379\"\u003e#379\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/mcepl\"\u003e\u003ccode\u003e@​mcepl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add typing to Scanner in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/382\"\u003e#382\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/Alunderin\"\u003e\u003ccode\u003e@​Alunderin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/36c5f547144df2d01970a5792d68c71a3380b227\"\u003e\u003ccode\u003e36c5f54\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.2.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/96cf077ba5a6b3b4b2f862db7e0fc532694a72e9\"\u003e\u003ccode\u003e96cf077\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003emake_fence_rule()\u003c/code\u003e factory for configurable fence markers (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/394\"\u003e#394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/3b4ff6ddd368b679643d12debf09e10ef602d4db\"\u003e\u003ccode\u003e3b4ff6d\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/393\"\u003e#393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8951f267370b03a26ae88600a6dfc707ea290067\"\u003e\u003ccode\u003e8951f26\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit hooks (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/693bb24063b6c658d60c7c14203ac6470387e3c6\"\u003e\u003ccode\u003e693bb24\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003egfm-like2\u003c/code\u003e preset with task lists, alerts, and single-tilde strikethro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/df6fd361099cab7fe0259467c3aaa3f284ec8259\"\u003e\u003ccode\u003edf6fd36\u003c/code\u003e\u003c/a\u003e ✨Allow plugins to register inline terminator characters (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/d4ea0ca7f44e3ca86c18a87356502c59e5e49ec3\"\u003e\u003ccode\u003ed4ea0ca\u003c/code\u003e\u003c/a\u003e 👌 Fix quadratic complexity in \u003ccode\u003efragments_join\u003c/code\u003e / \u003ccode\u003etext_join\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/89331476e44c150bc32e2597a5fae4cd15391167\"\u003e\u003ccode\u003e8933147\u003c/code\u003e\u003c/a\u003e 🔧 Add typing to Scanner (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/2f6ae107ba32e9a7bd2d00134d09a78ec805a6a0\"\u003e\u003ccode\u003e2f6ae10\u003c/code\u003e\u003c/a\u003e 🔧 Add AGENTS.md and copilot-setup-steps workflow (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/49043e4445d233598fb893bed6949f7b25ae4e27\"\u003e\u003ccode\u003e49043e4\u003c/code\u003e\u003c/a\u003e Add --stdin option to CLI for reading Markdown from standard input (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mdit-py-plugins` from 0.5.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/releases\"\u003emdit-py-plugins's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/139\"\u003eexecutablebooks/mdit-py-plugins#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.1 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/140\"\u003eexecutablebooks/mdit-py-plugins#140\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.6.0...v0.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add AGENTS.md and copilot-setup-steps workflow by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ NEW: Add superscript plugin and tests by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add GFM autolink and composite GFM plugins by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/135\"\u003eexecutablebooks/mdit-py-plugins#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fix pre-commit by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/136\"\u003eexecutablebooks/mdit-py-plugins#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🚀 Release v0.6.0 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/137\"\u003eexecutablebooks/mdit-py-plugins#137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/132\"\u003eexecutablebooks/mdit-py-plugins#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/pull/128\"\u003eexecutablebooks/mdit-py-plugins#128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\"\u003ehttps://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/blob/master/CHANGELOG.md\"\u003emdit-py-plugins's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.6.1 - 2026-05-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eField lists inside list items (or other indented containers) would recursively nest each field inside the previous one, instead of being siblings.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.6.0 - 2026-05-07\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003egfm_autolink\u003c/code\u003e plugin implements \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolink literals\u003c/a\u003e,\nauto-linking URLs and email addresses without requiring angle brackets:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003eVisit www.example.com or contact user@example.com\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe \u003ccode\u003egfm\u003c/code\u003e composite plugin enables a full Github Flavored Markdown (GFM)-like configuration in a single call\n(tables, strikethrough, autolinks, task lists, alerts, and footnotes).\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax\"\u003ethe GitHub docs\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRequires markdown-it-py \u0026gt;= 4.1.0.\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e✨ NEW: Add superscript plugin and tests, thanks to \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003ePorted from \u003ca href=\"https://github.com/markdown-it/markdown-it-sup\"\u003emarkdown-it-sup\u003c/a\u003e.\nRenders superscript text using \u003ccode\u003e^..^\u003c/code\u003e syntax:\u003c/p\u003e\n\u003cpre lang=\"markdown\"\u003e\u003ccode\u003e29^th^ of May\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/da70e05b7630c38047d1921ef21d1aadc34c1ea9\"\u003e\u003ccode\u003eda70e05\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.1 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/f41d88c17c90dac4f9fd77418e1dcc2ba2c4ea9b\"\u003e\u003ccode\u003ef41d88c\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Nested field lists incorrectly nesting inside parent containers (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b8735072c4a0d406ad29a87f472a638f6d4ac3f5\"\u003e\u003ccode\u003eb873507\u003c/code\u003e\u003c/a\u003e 🚀 Release v0.6.0 (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/b77a18bcb3a8a640dbfc57dcb901fa18cee74bf8\"\u003e\u003ccode\u003eb77a18b\u003c/code\u003e\u003c/a\u003e 🔧 Fix pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/28a97783ee58785003bc9c84e0821bc3babb35a3\"\u003e\u003ccode\u003e28a9778\u003c/code\u003e\u003c/a\u003e ✨ Add GFM autolink and composite GFM plugins (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/39c681fddac49430ee4a748433bcfae5888b7576\"\u003e\u003ccode\u003e39c681f\u003c/code\u003e\u003c/a\u003e ✨ NEW: Add superscript plugin and tests (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/128\"\u003e#128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/commit/62f00586e872e62a700fb13f65e254c686474fc6\"\u003e\u003ccode\u003e62f0058\u003c/code\u003e\u003c/a\u003e 🔧 Add AGENTS.md and copilot-setup-steps workflow (\u003ca href=\"https://redirect.github.com/executablebooks/mdit-py-plugins/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/executablebooks/mdit-py-plugins/compare/v0.5.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 5.0.0 to 5.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003ch2\u003e✨ New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#alerts-github-style-callouts\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#gfm-autolinks\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/configuration.html\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#code-fences-using-colons\"\u003edocs\u003c/a\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e👌 Improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ccode\u003emyst_gfm_only\u003c/code\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1126\"\u003e#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1129\"\u003e#1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⬆️ Dependency Upgrades\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mb\"\u003e\u003ccode\u003e@​mb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1126\"\u003eexecutablebooks/MyST-Parser#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Bizordec\"\u003e\u003ccode\u003e@​Bizordec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1114\"\u003eexecutablebooks/MyST-Parser#1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilia-kats\"\u003e\u003ccode\u003e@​ilia-kats\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1110\"\u003eexecutablebooks/MyST-Parser#1110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0 - 2026-05-13\u003c/h2\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;alert\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\"\u003eGFM alerts\u003c/a\u003e (e.g. \u003ccode\u003e\u0026gt; [!NOTE]\u003c/code\u003e), see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/alerts\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003e\u0026quot;gfm_autolink\u0026quot;\u003c/code\u003e syntax extension for \u003ca href=\"https://github.github.com/gfm/#autolinks-extension-\"\u003eGFM autolinks\u003c/a\u003e, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/gfm-autolink\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_strikethrough_single_tilde\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to allow single tilde (\u003ccode\u003e~\u003c/code\u003e) for strikethrough by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Add \u003ccode\u003emyst_colon_fence_exact_match\u003c/code\u003e \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003econfig option\u003c/a\u003e to require the closing colon fence to have exactly the same number of colons as the opening, see \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/syntax/colon_fence\"\u003e\u003c/a\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👌 Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Update \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/sphinx/config-options\"\u003e\u003ccode\u003emyst_gfm_only\u003c/code\u003e\u003c/a\u003e mode to use the unified \u003ccode\u003egfm_plugin\u003c/code\u003e, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve MathJax 4 compatibility for Sphinx 9 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1110\"\u003egh-pr:1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Stop directive-option parsing at colon fences, fixing nested colon fence directives by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1133\"\u003egh-pr:1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Use docname instead of source path in warning locations by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1114\"\u003egh-pr:1114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Correctly encode \u003ccode\u003e\u0026amp;\u003c/code\u003e in Markdown URLs by not HTML-escaping \u003ccode\u003erefuri\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1126\"\u003egh-pr:1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eRemovedInSphinx10Warning\u003c/code\u003e for inventory item iteration by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1129\"\u003egh-pr:1129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Pin \u003ccode\u003emdit-py-plugins\u0026gt;=0.6.1\u003c/code\u003e for nested field list fix by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1134\"\u003egh-pr:1134\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⬆️ Dependency Upgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade to \u003ccode\u003emarkdown-it-py~=4.2\u003c/code\u003e and \u003ccode\u003emdit-py-plugins~=0.6\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1128\"\u003egh-pr:1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update pygments requirement from \u003ccode\u003e\u0026lt;2.20\u003c/code\u003e to \u003ccode\u003e\u0026lt;2.21\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:1117\"\u003egh-pr:1117\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ev5.0.0...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/2871eb95750873ccec2c4ab1dac0568815b64ca5\"\u003e\u003ccode\u003e2871eb9\u003c/code\u003e\u003c/a\u003e 🚀 Release v5.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1135\"\u003e#1135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cc5db37fd06445d7d023f7f2e0c2c073730be9cf\"\u003e\u003ccode\u003ecc5db37\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Pin mdit-py-plugins\u0026gt;=0.6.1 for nested field list fix (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1134\"\u003e#1134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/4ce57f94af31de53c8790ccfffa3107c64241d0d\"\u003e\u003ccode\u003e4ce57f9\u003c/code\u003e\u003c/a\u003e 👌 Stop directive-option parsing at colon fences (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1133\"\u003e#1133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/cfcc3278f9e8c7508aae4cea82f1dd9c5c111183\"\u003e\u003ccode\u003ecfcc327\u003c/code\u003e\u003c/a\u003e ⬆️ Bump mypy from 2.0.0 to 2.1.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1131\"\u003e#1131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/691738c3d897f82577440e18079d8b990edb8e34\"\u003e\u003ccode\u003e691738c\u003c/code\u003e\u003c/a\u003e ⬆️ Bump ruff from 0.15.10 to 0.15.12 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1132\"\u003e#1132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/0fb1ae983d7b0df68bd02a9f77b0bc45057edbaf\"\u003e\u003ccode\u003e0fb1ae9\u003c/code\u003e\u003c/a\u003e 👌 IMPROVE: MathJax 4 compatibility (Sphinx 9) (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1110\"\u003e#1110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f153b4b8ae68cbe77b41942147cf5cb6464168f0\"\u003e\u003ccode\u003ef153b4b\u003c/code\u003e\u003c/a\u003e ⬆️ Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/93acf8dae502aba484b14a1d291366fc21f839e6\"\u003e\u003ccode\u003e93acf8d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1095\"\u003e#1095\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/a5f1d6963bc3ee361d25309a24ccc42e6860fd54\"\u003e\u003ccode\u003ea5f1d69\u003c/code\u003e\u003c/a\u003e ⬆️ Update pygments requirement from \u0026lt;2.20 to \u0026lt;2.21 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/838129687219517e31a395736397c957d93532dd\"\u003e\u003ccode\u003e8381296\u003c/code\u003e\u003c/a\u003e 🐛 FIX: Use docname instead of source path in warning locations (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v5.0.0...v5.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.8.3 to 2.8.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix another inefficient attribute pattern (\u003ca href=\"https://github.com/mauriceng98\"\u003e\u003ccode\u003e@​mauriceng98\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Limit total number of selectors processed in a pattern to prevent massive selector requests (\u003ca href=\"https://github.com/mauriceng98\"\u003e\u003ccode\u003e@​mauriceng98\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/28108ab805818c832d9568142a99844fd95a0d39\"\u003e\u003ccode\u003e28108ab\u003c/code\u003e\u003c/a\u003e Limit excessive selectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/ef188721d6cc95641e99297b3a26ac17b7dfcfa7\"\u003e\u003ccode\u003eef18872\u003c/code\u003e\u003c/a\u003e Fix test for Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/eb4397618709186c109400448c6043b728217dc3\"\u003e\u003ccode\u003eeb43976\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/3a661b23b20e92b49b4683f0227c26c9d765267f\"\u003e\u003ccode\u003e3a661b2\u003c/code\u003e\u003c/a\u003e Fix typo in pseudo-classes.md (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/0cb533d83bfc445c7c6321742a21f612305fc8ba\"\u003e\u003ccode\u003e0cb533d\u003c/code\u003e\u003c/a\u003e Update hatchling version requirement in pyproject.toml (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.8.3...2.8.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/edgarrmondragon/pep610/pull/181","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgarrmondragon%2Fpep610/issues/181","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/181/packages"}},{"old_version":"3.1.0","new_version":"3.1.1","update_type":"patch","path":null,"pr_created_at":"2026-06-03T05:26:45.000Z","version_change":"3.1.0 → 3.1.1","issue":{"uuid":"4577142746","node_id":"PR_kwDORuOgZM7iFEm4","number":110,"state":"closed","title":"Bump snowballstemmer from 3.1.0 to 3.1.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-03T05:26:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T05:26:45.000Z","updated_at":"2026-06-03T05:27:03.000Z","time_to_close":10,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.1.0 to 3.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.1.0\u0026new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/nmurrell07/aiohttp/pull/110","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmurrell07%2Faiohttp/issues/110","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/110/packages"}},{"old_version":"3.0.1","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2026-05-31T02:43:32.000Z","version_change":"3.0.1 → 3.1.0","issue":{"uuid":"4556364594","node_id":"PR_kwDONf3zs87hCJcS","number":151,"state":"open","title":"chore(deps-dev): bump snowballstemmer from 3.0.1 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-31T02:43:32.000Z","updated_at":"2026-05-31T02:55:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.0.1 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.0.1\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/antonioterpin/pinet/pull/151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/antonioterpin%2Fpinet/issues/151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/151/packages"}},{"old_version":"3.0.1","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2026-05-25T15:36:54.000Z","version_change":"3.0.1 → 3.1.0","issue":{"uuid":"4518013716","node_id":"PR_kwDOFKxbkM7fGCAa","number":2008,"state":"closed","title":"chore(deps): bump snowballstemmer from 3.0.1 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-26T00:43:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-25T15:36:54.000Z","updated_at":"2026-05-26T00:43:26.000Z","time_to_close":32790,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nBumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.0.1 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=uv\u0026previous-version=3.0.1\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/sailfishos-mirror/cryptography/pull/2008","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fcryptography/issues/2008","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2008/packages"}},{"old_version":"3.0.1","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2026-05-25T06:07:57.000Z","version_change":"3.0.1 → 3.1.0","issue":{"uuid":"4514683723","node_id":"PR_kwDOAjat187e7O2p","number":8167,"state":"open","title":"Bump snowballstemmer from 3.0.1 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-25T06:07:57.000Z","updated_at":"2026-05-25T06:19:10.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/snowball"}],"path":null,"ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 3.0.1 to 3.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.0 (2026-05-22)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault if -syntax is used on a program with no code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix segmentation fault on some assignment syntax errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug introduced in v3.0.0 with conversion of \u003ccode\u003eamong\u003c/code\u003e starter.  If there\nwere any commands after the among in the same command list then the among\nitself would get lost.  Not triggered by any current algorithms.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClear name field when removing dead assignments.  This is visible in the\nsyntax tree shown when command line option -syntax is used, but probably\ndoesn't affect anything otherwise.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUsing \u003ccode\u003e-\u003c/code\u003e for the Snowball source file is now interpreted as stdin.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove comments generated by \u003ccode\u003e-comments\u003c/code\u003e to show more details of the\ncorresponding Snowball code (e.g. variable names, arithmetic expressions,\nand literal strings).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003e-coverage\u003c/code\u003e option which enables a code coverage feature.  So far this\ntracks which among strings and functions are exercised, and which grouping\ncharacters are exercised. !\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport \u003ccode\u003e-eprefix\u003c/code\u003e for all target languages.  This is easy to do and\nprovides a way to deal with externals which collide with keywords in the\ntarget language.  Our build system now uses \u003ccode\u003e-eprefix _\u003c/code\u003e for Python to make\nthe \u003ccode\u003estem\u003c/code\u003e external non-public (it is called by BaseStemmer method\n\u003ccode\u003estemWord()\u003c/code\u003e) and we no longer hard-code prefixing Python externals with\n\u003ccode\u003e_\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDescribe more options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSort target language options in \u003ccode\u003e--help\u003c/code\u003e output.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option is now optional.  If not specified we now write output(s)\nto the same filename as the first source, but with a different extension\n(e.g. path/to/english.sbl -\u0026gt; path/to/english.c and path/to/english.h).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003e-o\u003c/code\u003e option can now optionally include an extension so you can now\nwrite \u003ccode\u003e-c++ -o path/to/foo.cxx\u003c/code\u003e instead of \u003ccode\u003e-c++ -o path/to/foo\u003c/code\u003e, which can\nbe more convenient (e.g. in \u003ccode\u003emake\u003c/code\u003e rules) and also provides an easy way to\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/77e07c9c19b89266632b47a4321b33f2106135bb\"\u003e\u003ccode\u003e77e07c9\u003c/code\u003e\u003c/a\u003e Update for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/4d37f9c8796c6dc6da685f0c4e8ad1b805e52bd9\"\u003e\u003ccode\u003e4d37f9c\u003c/code\u003e\u003c/a\u003e Finalise NEWS entry for 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2d38e204cfcd0464548212f6fc7b16dd7ae5a41b\"\u003e\u003ccode\u003e2d38e20\u003c/code\u003e\u003c/a\u003e \u003ccode\u003emake update_version\u003c/code\u003e now also updates README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/1596c74613d2a51fd6630f0455a7461b3d753df0\"\u003e\u003ccode\u003e1596c74\u003c/code\u003e\u003c/a\u003e Go: Fix code generated for non-constant hop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/34d1214a93ab6bf8b45f819b0861c0bee73f65d1\"\u003e\u003ccode\u003e34d1214\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/65885b557388f0e5d325d0f1592e0bab1021f5f4\"\u003e\u003ccode\u003e65885b5\u003c/code\u003e\u003c/a\u003e finnish: Rename things to match algo description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5c05f53ba608e8bddfbc3727d2b1599b08fe6bbc\"\u003e\u003ccode\u003e5c05f53\u003c/code\u003e\u003c/a\u003e finnish: Accept apostrophe instead of VI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/df257423d4ba95f789b07998780fc025851b2521\"\u003e\u003ccode\u003edf25742\u003c/code\u003e\u003c/a\u003e JS: Generate simpler code for hop by constant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/27c93555234c3bacb7b0a8d5c442efc7d19afaa9\"\u003e\u003ccode\u003e27c9355\u003c/code\u003e\u003c/a\u003e Add runtime test of hop/next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/2508d200a9e7df87e6555dcfe217c9fecb362546\"\u003e\u003ccode\u003e2508d20\u003c/code\u003e\u003c/a\u003e Add test coverage for \u003ccode\u003ehop 1\u003c/code\u003e-\u0026gt;\u003ccode\u003enext\u003c/code\u003e canonicalisation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=3.0.1\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/microsoft/Qcodes/pull/8167","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FQcodes/issues/8167","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8167/packages"}},{"old_version":"2.2.0","new_version":"3.0.1","update_type":"major","path":null,"pr_created_at":"2026-04-01T03:33:38.000Z","version_change":"2.2.0 → 3.0.1","issue":{"uuid":"4183803259","node_id":"PR_kwDOIGWWtM7PIRyf","number":9,"state":"closed","title":"Bump the llvm-docs-requirements group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-24T07:10:16.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-01T03:33:38.000Z","updated_at":"2026-04-24T07:10:19.000Z","time_to_close":2000198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":30,"packages":[{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"furo","old_version":"2024.1.29","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"2.0.0","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"packaging","old_version":"23.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.2.6","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-automodapi","old_version":"0.17.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinx-reredirects","old_version":"0.1.2","new_version":"1.1.0","repository_url":"https://github.com/documatt/sphinx-reredirects"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.8","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group with 30 updates in the /llvm/docs directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.18.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2026.2.25` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.6` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.1.29` | `2025.12.19` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10.2` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `5.0.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `26.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.20.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.33.1` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.2.6` | `9.1.0` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.17.0` | `0.22.0` |\n| [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) | `0.1.2` | `1.1.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.8` | `2.0.0` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.3` |\n\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.14.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.12.2 to 4.14.3\n\nUpdates `certifi` from 2023.11.17 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2023.11.17...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.3.2 to 3.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5478b84058a2a04e2d67a5dabbe0a273706707aa\"\u003e\u003ccode\u003e5478b84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/715\"\u003e#715\u003c/a\u003e from jawah/release-3.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5c0a09e2caf1b3977df691916e949e1de4b8a738\"\u003e\u003ccode\u003e5c0a09e\u003c/code\u003e\u003c/a\u003e :heavy_check_mark: add confidence for threading usage, mostly due to lru_cach...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef826b28d9f21e0059c93acc69a8bf364126c179\"\u003e\u003ccode\u003eef826b2\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5564f1aebe56584150a988f565ff69ee316dcefe\"\u003e\u003ccode\u003e5564f1a\u003c/code\u003e\u003c/a\u003e :pencil: update docs accordingly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f2cf7d86e7c3ef4b77790a754b048bfada4fd09\"\u003e\u003ccode\u003e0f2cf7d\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/54a189446becf4f2b42772f0dce89a5ef79fe8cc\"\u003e\u003ccode\u003e54a1894\u003c/code\u003e\u003c/a\u003e :bug: fix --normalize writing to wrong path with multiple files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2177e28828bb7fcc2f1bed2a2d4463161a180812\"\u003e\u003ccode\u003e2177e28\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b2497a54ba545dae84be01649d66fd52a7fcfc2d\"\u003e\u003ccode\u003eb2497a5\u003c/code\u003e\u003c/a\u003e :bug: edge case where noise difference between two candidates can be almost i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/13a5d0b471cfb9b60b8cda84c78b7874c0267123\"\u003e\u003ccode\u003e13a5d0b\u003c/code\u003e\u003c/a\u003e :wrench: upgrade ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b9ffbd4e8314b0f733ddb34eef32d80490eb947c\"\u003e\u003ccode\u003eb9ffbd4\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14t nox mypyc session\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.3.2...3.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.1.29 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.01.29...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.6 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.7\"\u003ehttps://github.com/kjd/idna/compare/v3.6...v3.7\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.10 (2024-09-15)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReverted to Unicode 15.1.0 data. Unicode 16 has some significant changes\nto UTS46 processing that will require more work to properly implement.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.9 (2024-09-13)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0\u003c/li\u003e\n\u003cli\u003eDeprecate setup.cfg in favour of pyproject.toml\u003c/li\u003e\n\u003cli\u003eUse ruff for code formatting\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Waket Zheng for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.8 (2024-08-23)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for\ncertain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no\nlonger testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.7 (2024-04-11)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could\ntake exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.5.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for...\n\n_Description has been truncated_","html_url":"https://github.com/openeuler-mirror/llvm-project/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openeuler-mirror%2Fllvm-project/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"}},{"old_version":"2.2.0","new_version":"3.0.1","update_type":"major","path":"/llvm/docs","pr_created_at":"2026-03-28T18:00:17.000Z","version_change":"2.2.0 → 3.0.1","issue":{"uuid":"4161115662","node_id":"PR_kwDORzFs-c7OS88R","number":2,"state":"closed","title":"Bump the llvm-docs-requirements group in /llvm/docs with 29 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-28T18:36:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-28T18:00:17.000Z","updated_at":"2026-03-28T18:36:32.000Z","time_to_close":2167,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":29,"packages":[{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"furo","old_version":"2023.8.19","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"myst-parser","old_version":"2.0.0","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"packaging","old_version":"23.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.33.0","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.1.2","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-automodapi","old_version":"0.16.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.4","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"}],"path":"/llvm/docs","ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group in /llvm/docs with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.18.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2026.2.25` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.6` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [furo](https://github.com/pradyunsg/furo) | `2023.8.19` | `2025.12.19` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10.2` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `5.0.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `26.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.33.0` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.1.2` | `9.1.0` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.16.0` | `0.22.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.4` | `2.0.0` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.3` |\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.14.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.12.2 to 4.14.3\n\nUpdates `certifi` from 2023.11.17 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c64d9f3a8496c0195548697f2080e716af66dd6a\"\u003e\u003ccode\u003ec64d9f3\u003c/code\u003e\u003c/a\u003e 2026.01.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4ac232f05a547071543d2fb069aa3c62b1dc79f3\"\u003e\u003ccode\u003e4ac232f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/95ae4b20e8abb7fa708e751e346466d16b36211a\"\u003e\u003ccode\u003e95ae4b2\u003c/code\u003e\u003c/a\u003e Update CI workflow to use Ubuntu 24.04 and Python 3.14 stable (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/b72a7b1a40ae20755338d3132d8f880427b3b6fc\"\u003e\u003ccode\u003eb72a7b1\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ecc267216fbdcecb1b2aa2aa175152b773cc5ced\"\u003e\u003ccode\u003eecc2672\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6a897dbc1124b17f179ef225742fcda481ec96f3\"\u003e\u003ccode\u003e6a897db\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/383\"\u003e#383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2023.11.17...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.3.2 to 3.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5478b84058a2a04e2d67a5dabbe0a273706707aa\"\u003e\u003ccode\u003e5478b84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/715\"\u003e#715\u003c/a\u003e from jawah/release-3.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5c0a09e2caf1b3977df691916e949e1de4b8a738\"\u003e\u003ccode\u003e5c0a09e\u003c/code\u003e\u003c/a\u003e :heavy_check_mark: add confidence for threading usage, mostly due to lru_cach...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef826b28d9f21e0059c93acc69a8bf364126c179\"\u003e\u003ccode\u003eef826b2\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5564f1aebe56584150a988f565ff69ee316dcefe\"\u003e\u003ccode\u003e5564f1a\u003c/code\u003e\u003c/a\u003e :pencil: update docs accordingly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f2cf7d86e7c3ef4b77790a754b048bfada4fd09\"\u003e\u003ccode\u003e0f2cf7d\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/54a189446becf4f2b42772f0dce89a5ef79fe8cc\"\u003e\u003ccode\u003e54a1894\u003c/code\u003e\u003c/a\u003e :bug: fix --normalize writing to wrong path with multiple files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2177e28828bb7fcc2f1bed2a2d4463161a180812\"\u003e\u003ccode\u003e2177e28\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b2497a54ba545dae84be01649d66fd52a7fcfc2d\"\u003e\u003ccode\u003eb2497a5\u003c/code\u003e\u003c/a\u003e :bug: edge case where noise difference between two candidates can be almost i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/13a5d0b471cfb9b60b8cda84c78b7874c0267123\"\u003e\u003ccode\u003e13a5d0b\u003c/code\u003e\u003c/a\u003e :wrench: upgrade ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b9ffbd4e8314b0f733ddb34eef32d80490eb947c\"\u003e\u003ccode\u003eb9ffbd4\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14t nox mypyc session\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.3.2...3.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2023.8.19 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2023.08.19...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.6 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.7\"\u003ehttps://github.com/kjd/idna/compare/v3.6...v3.7\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.10 (2024-09-15)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReverted to Unicode 15.1.0 data. Unicode 16 has some significant changes\nto UTS46 processing that will require more work to properly implement.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.9 (2024-09-13)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0\u003c/li\u003e\n\u003cli\u003eDeprecate setup.cfg in favour of pyproject.toml\u003c/li\u003e\n\u003cli\u003eUse ruff for code formatting\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Waket Zheng for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.8 (2024-08-23)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for\ncertain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no\nlonger testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e3.7 (2024-04-11)\n++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could\ntake exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.5.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/org-rex/llvm-project-6Mfiles_Restore_at_2026-03-28_10-35-15_UTC/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/org-rex%2Fllvm-project-6Mfiles_Restore_at_2026-03-28_10-35-15_UTC/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"2.2.0","new_version":"3.0.1","update_type":"major","path":"/sdk/python","pr_created_at":"2026-02-01T13:42:51.000Z","version_change":"2.2.0 → 3.0.1","issue":{"uuid":"3882060189","node_id":"PR_kwDOHFxNx87At1N7","number":1225,"state":"open","title":"chore(deps): bump snowballstemmer from 2.2.0 to 3.0.1 in /sdk/python","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-01T13:42:51.000Z","updated_at":"2026-02-01T13:42:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"}],"path":"/sdk/python","ecosystem":"pip"},"body":"Bumps [snowballstemmer](https://github.com/snowballstem/snowball) from 2.2.0 to 3.0.1.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/master/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.0.1 (2025-05-09)\u003c/h1\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003cstrong\u003einit\u003c/strong\u003e.py in 3.0.0 was incorrectly generated due to a missing\nbuild dependency and the list of algorithms was empty.  First reported by\nlaymonage.  Thanks to Dmitry Shachnev, Henry Schreiner and Adam Turner for\ndiagnosing and fixing.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/230\"\u003e#230\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/231\"\u003e#231\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd trove classifiers for Armenian and Yiddish which have now been registered\nwith PyPI.  Thanks to Henry Schreiner and Dmitry Shachnev.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/228\"\u003e#228\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate documented details of Python 2 support in old versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eSnowball 3.0.0 (2025-05-08)\u003c/h1\u003e\n\u003ch2\u003eAda\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid Ada code generated for Snowball \u003ccode\u003eloop\u003c/code\u003e (it was partly Pascal!)\nNone of the stemmers shipped in previous releases triggered this bug, but\nthe Turkish stemmer now does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe Ada runtime was not tracking the current length of the string\nbut instead used the current limit value or some other substitute, which\nmanifested as various incorrect behaviours for code inside of \u003ccode\u003esetlimit\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esize\u003c/code\u003e was incorrectly returning the difference between the limit and the\nbackwards limit.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003elenof\u003c/code\u003e or \u003ccode\u003esizeof\u003c/code\u003e on a string variable generated Ada code that didn't\neven compile.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix incorrect preconditions on some methods in the runtime.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug in runtime code used by \u003ccode\u003eattach\u003c/code\u003e, \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string\nvariable assignment when a (sub)string was replaced with a larger string.\nThis bug was triggered by code in the Kraaij-Pohlmann Dutch stemmer\nimplementation (which was previously not enabled by default but is now the\nstandard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid code generated for \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string variable\nassignment.  This bug was triggered by code in the Kraaij-Pohlmann\nDutch stemmer implementation (which was previously not enabled by default\nbut is now the standard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/e4b3efb449ccb994d39230eb6e8440d267471f4a\"\u003e\u003ccode\u003ee4b3efb\u003c/code\u003e\u003c/a\u003e Update for 3.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/bbd3319b7f46c8e82f6f96b2e7969bae7b4fba04\"\u003e\u003ccode\u003ebbd3319\u003c/code\u003e\u003c/a\u003e Protect empty languages dict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/298ff9fcc930fb6fae6bcc8c80eec74f8f73134c\"\u003e\u003ccode\u003e298ff9f\u003c/code\u003e\u003c/a\u003e Update details of Python 2 support in old versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/53fe098738ecb029e943804ad6cec442e54801a8\"\u003e\u003ccode\u003e53fe098\u003c/code\u003e\u003c/a\u003e python: Specify correct dependencies for \u003ccode\u003e$(python_output_dir)/__init__.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/00a22def0924d06bb96dcffd728ae875b61d6613\"\u003e\u003ccode\u003e00a22de\u003c/code\u003e\u003c/a\u003e Stop excluding classifiers for Armenian and Yiddish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/abd9adc758f5ba7f5db567d70a61e0929b69c3c1\"\u003e\u003ccode\u003eabd9adc\u003c/code\u003e\u003c/a\u003e Update for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/d23d3561f48a505236fd8a89748286a80050b03d\"\u003e\u003ccode\u003ed23d356\u003c/code\u003e\u003c/a\u003e Back out incomplete ESM support for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/ff42274e2247c475d9f42993ef307228949d5507\"\u003e\u003ccode\u003eff42274\u003c/code\u003e\u003c/a\u003e Update draft NEWS entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd61f01a4e04c7a79b91a3cc2a42b6ffa144a99b\"\u003e\u003ccode\u003ecd61f01\u003c/code\u003e\u003c/a\u003e tamil: remove_tense_suffix signals if ending removed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/edfe5763ed779aa1622eecd599029ecfb3ddb7aa\"\u003e\u003ccode\u003eedfe576\u003c/code\u003e\u003c/a\u003e nepali: Reformat amongs to be clearer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v2.2.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer\u0026package-manager=pip\u0026previous-version=2.2.0\u0026new-version=3.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/slumbering/dagger/pull/1225","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/slumbering%2Fdagger/issues/1225","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1225/packages"}},{"old_version":"2.2.0","new_version":"3.0.1","update_type":"major","path":null,"pr_created_at":"2026-01-25T03:57:14.000Z","version_change":"2.2.0 → 3.0.1","issue":{"uuid":"3852512447","node_id":"PR_kwDOHR9vV86_Miyr","number":503,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 107 updates","user":"dependabot[bot]","labels":["skip-changelog","major","chore"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T03:57:14.000Z","updated_at":"2026-02-12T14:02:23.388Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":107,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiohappyeyeballs","old_version":"2.4.0","new_version":"2.6.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"aioitertools","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/omnilib/aioitertools"},{"name":"aiokafka","old_version":"0.11.0","new_version":"0.12.0","repository_url":"https://github.com/aio-libs/aiokafka"},{"name":"aiosignal","old_version":"1.3.1","new_version":"1.4.0","repository_url":"https://github.com/aio-libs/aiosignal"},{"name":"ansible-builder","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/ansible/ansible-builder"},{"name":"ansible-compat","old_version":"24.8.0","new_version":"24.10.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"ansible-pygments","old_version":"0.1.1","new_version":"0.1.2","repository_url":"https://github.com/ansible-community/ansible-pygments"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"antsibull-changelog","old_version":"0.29.0","new_version":"0.35.0","repository_url":"https://github.com/ansible-community/antsibull-changelog"},{"name":"antsibull-core","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ansible-community/antsibull-core"},{"name":"antsibull-docs","old_version":"2.13.1","new_version":"2.24.0","repository_url":"https://github.com/ansible-community/antsibull-docs"},{"name":"antsibull-docs-parser","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/ansible-community/antsibull-docs-parser"},{"name":"async-timeout","old_version":"4.0.3","new_version":"5.0.1","repository_url":"https://github.com/aio-libs/async-timeout"},{"name":"azure-core","old_version":"1.30.2","new_version":"1.38.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"babel","old_version":"2.16.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bindep","old_version":"2.11.0","new_version":"2.13.0"},{"name":"black","old_version":"24.8.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"botocore","old_version":"1.35.7","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"bracex","old_version":"2.5","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"build","old_version":"1.2.1","new_version":"1.4.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2024.8.30","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.0","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"43.0.1","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"drools-jpy","old_version":"0.3.9","new_version":"0.3.14","repository_url":"https://github.com/ansible/drools_jpy"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.15.4","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"frozenlist","old_version":"1.4.1","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"galaxy-importer","old_version":"0.4.24","new_version":"0.4.37","repository_url":"https://github.com/ansible/galaxy-importer"},{"name":"gitdb","old_version":"4.0.11","new_version":"4.0.12","repository_url":"https://github.com/gitpython-developers/gitdb"},{"name":"gitpython","old_version":"3.1.43","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.8","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"6.2.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isodate","old_version":"0.6.1","new_version":"0.7.2","repository_url":"https://github.com/gweis/isodate"},{"name":"janus","old_version":"1.0.0","new_version":"2.0.0","repository_url":"https://github.com/aio-libs/janus"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jaraco-functools","old_version":"4.0.2","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"jpy","old_version":"0.18.0","new_version":"1.3.0","repository_url":"https://github.com/jpy-consortium/jpy"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2023.12.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"keyring","old_version":"25.3.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markdown","old_version":"3.7","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"2.1.5","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"mock","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"more-itertools","old_version":"10.4.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"multidict","old_version":"6.0.5","new_version":"6.7.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"nh3","old_version":"0.2.18","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.1","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.0","new_version":"7.0.3"},{"name":"perky","old_version":"0.9.2","new_version":"0.9.3","repository_url":"https://github.com/larryhastings/perky"},{"name":"pip","old_version":"24.2","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"pkginfo","old_version":"1.10.0","new_version":"1.12.1.2"},{"name":"platformdirs","old_version":"4.2.2","new_version":"4.4.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"psycopg","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-pool","old_version":"3.2.2","new_version":"3.2.8","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pycodestyle","old_version":"2.11.1","new_version":"2.14.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.20.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyflakes","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/PyCQA/pyflakes"},{"name":"pygments","old_version":"2.18.0","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyproject-api","old_version":"1.7.1","new_version":"1.9.1","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pyproject-hooks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"python-daemon","old_version":"3.0.1","new_version":"3.1.2"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"readme-renderer","old_version":"43.0","new_version":"44.0","repository_url":"https://github.com/pypa/readme_renderer"},{"name":"referencing","old_version":"0.35.1","new_version":"0.36.2","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.8.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.20.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"rstcheck","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/rstcheck/rstcheck"},{"name":"rstcheck-core","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/rstcheck/rstcheck-core"},{"name":"ruamel-yaml","old_version":"0.18.6","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.8","new_version":"0.2.15"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smmap","old_version":"5.0.1","new_version":"5.0.2","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"sphinx-ansible-theme","old_version":"0.10.3","new_version":"0.10.4","repository_url":"https://github.com/ansible-community/sphinx_ansible_theme"},{"name":"sphinx-rtd-theme","old_version":"2.0.0","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"twine","old_version":"5.1.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typer","old_version":"0.12.5","new_version":"0.21.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typer-config","old_version":"1.4.0","new_version":"1.4.2","repository_url":"https://github.com/maxb2/typer-config"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"1.26.20","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"20.26.3","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcmatch","old_version":"9.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"websockets","old_version":"13.0.1","new_version":"15.0.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"1.16.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yamllint","old_version":"1.35.1","new_version":"1.37.1","repository_url":"https://github.com/adrienverge/yamllint"},{"name":"yarl","old_version":"1.9.8","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.1","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 107 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.4.0` | `2.6.1` |\n| [aioitertools](https://github.com/omnilib/aioitertools) | `0.12.0` | `0.13.0` |\n| [aiokafka](https://github.com/aio-libs/aiokafka) | `0.11.0` | `0.12.0` |\n| [aiosignal](https://github.com/aio-libs/aiosignal) | `1.3.1` | `1.4.0` |\n| [ansible-builder](https://github.com/ansible/ansible-builder) | `3.1.0` | `3.1.1` |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.8.0` | `24.10.0` |\n| [ansible-pygments](https://github.com/ansible-community/ansible-pygments) | `0.1.1` | `0.1.2` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [antsibull-changelog](https://github.com/ansible-community/antsibull-changelog) | `0.29.0` | `0.35.0` |\n| [antsibull-core](https://github.com/ansible-community/antsibull-core) | `3.0.2` | `3.5.0` |\n| [antsibull-docs](https://github.com/ansible-community/antsibull-docs) | `2.13.1` | `2.24.0` |\n| [antsibull-docs-parser](https://github.com/ansible-community/antsibull-docs-parser) | `1.1.0` | `1.2.2` |\n| [async-timeout](https://github.com/aio-libs/async-timeout) | `4.0.3` | `5.0.1` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.30.2` | `1.38.0` |\n| [babel](https://github.com/python-babel/babel) | `2.16.0` | `2.17.0` |\n| bindep | `2.11.0` | `2.13.0` |\n| [black](https://github.com/psf/black) | `24.8.0` | `25.11.0` |\n| [botocore](https://github.com/boto/botocore) | `1.35.7` | `1.42.34` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5` | `2.6` |\n| [build](https://github.com/pypa/build) | `1.2.1` | `1.4.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.0` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.1.8` |\n| [cryptography](https://github.com/pyca/cryptography) | `43.0.1` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [drools-jpy](https://github.com/ansible/drools_jpy) | `0.3.9` | `0.3.14` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.15.4` | `3.19.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.4.1` | `1.8.0` |\n| [galaxy-importer](https://github.com/ansible/galaxy-importer) | `0.4.24` | `0.4.37` |\n| [gitdb](https://github.com/gitpython-developers/gitdb) | `4.0.11` | `4.0.12` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.43` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.8` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `6.2.1` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.1.0` |\n| [isodate](https://github.com/gweis/isodate) | `0.6.1` | `0.7.2` |\n| [janus](https://github.com/aio-libs/janus) | `1.0.0` | `2.0.0` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.0` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.0.2` | `4.4.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [jpy](https://github.com/jpy-consortium/jpy) | `0.18.0` | `1.3.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2023.12.1` | `2025.9.1` |\n| [keyring](https://github.com/jaraco/keyring) | `25.3.0` | `25.7.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.5` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.1` | `0.4.2` |\n| [mock](https://github.com/testing-cabal/mock) | `5.1.0` | `5.2.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.4.0` | `10.8.0` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.0.5` | `6.7.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.18` | `0.3.2` |\n| [packaging](https://github.com/pypa/packaging) | `24.1` | `26.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.0` | `7.0.3` |\n| [perky](https://github.com/larryhastings/perky) | `0.9.2` | `0.9.3` |\n| [pip](https://github.com/pypa/pip) | `24.2` | `25.3` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.10.0` | `1.12.1.2` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.4.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-pool](https://github.com/psycopg/psycopg) | `3.2.2` | `3.2.8` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.11.1` | `2.14.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.20.1` | `2.41.5` |\n| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.1.0` | `3.4.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.19.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.2` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.7.1` | `1.9.1` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.1.0` | `1.2.0` |\n| python-daemon | `3.0.1` | `3.1.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [readme-renderer](https://github.com/pypa/readme_renderer) | `43.0` | `44.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.36.2` |\n| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.8.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.0` | `0.27.1` |\n| [rstcheck](https://github.com/rstcheck/rstcheck) | `6.2.4` | `6.2.5` |\n| [rstcheck-core](https://github.com/rstcheck/rstcheck-core) | `1.2.1` | `1.2.2` |\n| ruamel-yaml | `0.18.6` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.8` | `0.2.15` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.1` | `5.0.2` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [sphinx-ansible-theme](https://github.com/ansible-community/sphinx_ansible_theme) | `0.10.3` | `0.10.4` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `2.0.0` | `3.1.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.0` |\n| [twine](https://github.com/pypa/twine) | `5.1.1` | `6.2.0` |\n| [typer](https://github.com/fastapi/typer) | `0.12.5` | `0.21.1` |\n| [typer-config](https://github.com/maxb2/typer-config) | `1.4.0` | `1.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `1.26.20` | `2.6.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.26.3` | `20.36.1` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `9.0` | `10.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `13.0.1` | `15.0.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [yamllint](https://github.com/adrienverge/yamllint) | `1.35.1` | `1.37.1` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.9.8` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.1` | `3.23.0` |\n\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#221\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.4.0 to 2.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/151\"\u003e#151\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.0...v2.6.1\"\u003ev2.6.0...v2.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/149\"\u003e#149\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCreates an api_reference.rst file to expose the existing documentation for the few functions that have docstrings, as well as add documentation for AddrInfoType and SocketFactoryType. Now, these can be properly pointed to by other projects' documentation.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.5.0...v2.6.0\"\u003ev2.5.0...v2.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/147\"\u003e#147\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Kieren \u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.8...v2.5.0\"\u003ev2.4.8...v2.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/143\"\u003e#143\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe first attempt to fix this was to use the cpython staggered race updates in \u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/142\"\u003e#142\u003c/a\u003e but there is still a race there where there can be multiple winners. Instead we now accept that we will not be able to cancel all coros in time and there will always be a risk of multiple winners. We store all sockets in a set that were not already cleaned up and we close all but the first winner after the staggered race finishes.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.7...v2.4.8\"\u003ev2.4.7...v2.4.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve typeerror on import for python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePublish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve warnings when running tests (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/144\"\u003e#144\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e96264aec89b9bd34d37413f610d039c56393a48\"\u003e\u003ccode\u003ee96264a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure all timers are cancelled when after staggered race finishes (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/136\"\u003e#136\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/f75891d8974693b24af9789a8981ed7f6bc55c5c\"\u003e\u003ccode\u003ef75891d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep classifiers in project to avoid automatic enrichment (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/134\"\u003e#134\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/99edb20e9d3e53ead65b55cb3e93c22c03d06599\"\u003e\u003ccode\u003e99edb20\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove classifiers to prevent recalculation by poetry (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/131\"\u003e#131\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/66e1c90ae81f71c7039cd62c60417a96202d906c\"\u003e\u003ccode\u003e66e1c90\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4 (2024-11-30)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle oserror on failure to close socket instead of raising indexerror (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/114\"\u003e#114\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c542f684d329fed04093caa2b31d8f7f6e0e0949\"\u003e\u003ccode\u003ec542f68\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3 (2024-09-30)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e3bd5bdf44f5d187802de6dcb08d27e1ca6da048\"\u003e\u003ccode\u003ee3bd5bd\u003c/code\u003e\u003c/a\u003e 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e fix: resolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b23d9194d6db1c4d237da0da623a081573385915\"\u003e\u003ccode\u003eb23d919\u003c/code\u003e\u003c/a\u003e chore: remove unused CI exclude for Python 3.8.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/36149e7194d9a24fc8109265dee80fecd362f449\"\u003e\u003ccode\u003e36149e7\u003c/code\u003e\u003c/a\u003e 2.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e feat(docs): publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/17d5e48488f7b533efea33ebb89c25e7b4eda7ad\"\u003e\u003ccode\u003e17d5e48\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3fed4432036740392483608a9da86637cf1bd64b\"\u003e\u003ccode\u003e3fed443\u003c/code\u003e\u003c/a\u003e 2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e feat: add callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c4ab1e5409fe086c12932e47dc4a305eb15b4091\"\u003e\u003ccode\u003ec4ab1e5\u003c/code\u003e\u003c/a\u003e 2.4.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e fix: close runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.0...v2.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aioitertools` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aioitertools/blob/main/CHANGELOG.md\"\u003eaioitertools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eModernized project metadata (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed references to old branch (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTested up to Python 3.14 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse modern type annotations, clean up lint (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.12.0...v0.13.0\n     1\tAlireza Ghasemi\n     6\tAmethyst Reese\n    10\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/47a2068abc2c7e34bff1a188cb5ce66fa24d9404\"\u003e\u003ccode\u003e47a2068\u003c/code\u003e\u003c/a\u003e Version bump v0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/e1a9219e58fb948223c292715e83ec1281c3a5e2\"\u003e\u003ccode\u003ee1a9219\u003c/code\u003e\u003c/a\u003e Enable RUF rules (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/a744b4a9951aaa92fabb85fc401a7c287755eeee\"\u003e\u003ccode\u003ea744b4a\u003c/code\u003e\u003c/a\u003e Ruff upgrade lint fixes (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/3bcf4e9bef9154589ee90b0bf9185f0fe04e1c39\"\u003e\u003ccode\u003e3bcf4e9\u003c/code\u003e\u003c/a\u003e Switch from flake8 to ruff (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/1e3e55cd0fe6ee61064d2c325fb0617f08e83f4a\"\u003e\u003ccode\u003e1e3e55c\u003c/code\u003e\u003c/a\u003e Bump ufmt from 2.7.1 to 2.8.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/4c8b4f8a873cf66a4c729002ddc74b4bf32f03ab\"\u003e\u003ccode\u003e4c8b4f8\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.1.1 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/8524be5b77433e81eb6ecf8739ffe38844e6ca8f\"\u003e\u003ccode\u003e8524be5\u003c/code\u003e\u003c/a\u003e Bump black from 24.8.0 to 25.9.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/78e7205fb4d85686b5e459152ddc06fc1feee538\"\u003e\u003ccode\u003e78e7205\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.11.2 to 1.18.2 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/eafa768f4274f922cfe74afaa1bfb5549f887fb6\"\u003e\u003ccode\u003eeafa768\u003c/code\u003e\u003c/a\u003e Bump coverage from 7.6.1 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/15c764cfe45e9972e27bef5cb66a12fdf8a3f577\"\u003e\u003ccode\u003e15c764c\u003c/code\u003e\u003c/a\u003e Bump flit from 3.9.0 to 3.12.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aioitertools/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiokafka` from 0.11.0 to 0.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/releases\"\u003eaiokafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.12.0\u003c/h2\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/blob/master/CHANGES.rst\"\u003eaiokafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.12.0 (2024-10-26)\u003c/h1\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f6c79a086f1d5cf2b6e94e65db05970c4729c7a0\"\u003e\u003ccode\u003ef6c79a0\u003c/code\u003e\u003c/a\u003e Update actions, fix publishing (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/71335629d503cb3ad260de662e23c32402c8368b\"\u003e\u003ccode\u003e7133562\u003c/code\u003e\u003c/a\u003e Prepare 0.12.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f7861f682c9b5cd78411e7fd6ea0fc4bf92ded33\"\u003e\u003ccode\u003ef7861f6\u003c/code\u003e\u003c/a\u003e Remove duplicate error log during rebalance (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e7c9033b7d44c691073e9e25438f2c8ec523a14f\"\u003e\u003ccode\u003ee7c9033\u003c/code\u003e\u003c/a\u003e Add Python 3.13, remove 3.8 (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/608ab2443510c92226de0eb3fc2065f5d1307e12\"\u003e\u003ccode\u003e608ab24\u003c/code\u003e\u003c/a\u003e Fix ClusterMetadata request_update() (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/4cff9d77014e922c6e458224ed6abbae4fa07c4d\"\u003e\u003ccode\u003e4cff9d7\u003c/code\u003e\u003c/a\u003e Made classes enum.IntEnums where appropriate. (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/01c60cd9c45e975aee8d4932247108a9e639d026\"\u003e\u003ccode\u003e01c60cd\u003c/code\u003e\u003c/a\u003e Quote username in SCRAM auth (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e2afc034b59626242b51b06b30a62c565ef491d9\"\u003e\u003ccode\u003ee2afc03\u003c/code\u003e\u003c/a\u003e fix type on producer docs (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f9dbed1a00337971e6569c6611a98c1ab294fe98\"\u003e\u003ccode\u003ef9dbed1\u003c/code\u003e\u003c/a\u003e Add readthedocs config (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/2f976d0301682f0fe631c04c08d653be0d20ccb1\"\u003e\u003ccode\u003e2f976d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1030\"\u003e#1030\u003c/a\u003e from webknjaz/maintenance/gha-pypi-tokenless-publishing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiokafka/compare/v0.11.0...v0.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosignal` from 1.3.1 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiosignal/releases\"\u003eaiosignal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/413\"\u003e#413\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/645\"\u003e#645\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiosignal/blob/master/CHANGES.rst\"\u003eaiosignal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.4.0 (2025-07-03)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch1\u003e1.3.2 (2024-12-13)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support.\n\u003ccode\u003e[#413](https://github.com/aio-libs/aiosignal/issues/413) \u0026lt;https://github.com/aio-libs/aiosignal/issues/413\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support.\n\u003ccode\u003e[#645](https://github.com/aio-libs/aiosignal/issues/645) \u0026lt;https://github.com/aio-libs/aiosignal/issues/645\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#362](https://github.com/aio-libs/aiosignal/issues/362) \u0026lt;https://github.com/aio-libs/aiosignal/issues/362\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/1cf80149c869d410c90a58e85e9c703be6ef8692\"\u003e\u003ccode\u003e1cf8014\u003c/code\u003e\u003c/a\u003e Fix deploy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/892494c5c72553e281e57e924cf055e6125fb0fc\"\u003e\u003ccode\u003e892494c\u003c/code\u003e\u003c/a\u003e Release v1.4 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/718\"\u003e#718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/fa360821631383aed6a534da6f73ad149ec666f7\"\u003e\u003ccode\u003efa36082\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/719\"\u003e#719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/b7f68f12fed7c4b84a6866984e7adafcd18fe265\"\u003e\u003ccode\u003eb7f68f1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/717\"\u003e#717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/2b1acac380eaaa91a643bfc9c24fa1f3942f0d45\"\u003e\u003ccode\u003e2b1acac\u003c/code\u003e\u003c/a\u003e Build(deps): Bump sigstore/gh-action-sigstore-python from 3.0.0 to 3.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/17456ed5f968c0001a8823c2076f999fbf448157\"\u003e\u003ccode\u003e17456ed\u003c/code\u003e\u003c/a\u003e Build(deps): Bump tox from 4.26.0 to 4.27.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/715\"\u003e#715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/4c236903da2e71b85652c07bed69013189a39406\"\u003e\u003ccode\u003e4c23690\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pytest from 8.4.0 to 8.4.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/714\"\u003e#714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/7be2f6833be08bb14207bc627f9931665cd947ce\"\u003e\u003ccode\u003e7be2f68\u003c/code\u003e\u003c/a\u003e Build(deps): Bump mypy from 1.16.0 to 1.16.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/713\"\u003e#713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/5d62945d07c9413720e968cc3f25c66307d9a337\"\u003e\u003ccode\u003e5d62945\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.9.0 to 7.9.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/a6d85c1c3430621814d6163ea442828e7f31b34b\"\u003e\u003ccode\u003ea6d85c1\u003c/code\u003e\u003c/a\u003e Build(deps): Bump dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiosignal/compare/v1.3.1...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-builder` from 3.1.0 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-builder/releases\"\u003eansible-builder's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: capitalize 'as' to follow from-as-casing rule (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd simple EE file example by (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ehttps://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ea0df628f9d36b34d64b0d93f3491ecd17ef4426\"\u003e\u003ccode\u003eea0df62\u003c/code\u003e\u003c/a\u003e Add scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/757\"\u003e#757\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/97f046fac1f7b7bdbaae17b2efda0837d86362db\"\u003e\u003ccode\u003e97f046f\u003c/code\u003e\u003c/a\u003e Increase integration test timeout to 9m (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/754\"\u003e#754\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ecc55c1205ba48f24ad08820f8ad9629d076a4fa\"\u003e\u003ccode\u003eecc55c1\u003c/code\u003e\u003c/a\u003e Set file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/748\"\u003e#748\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ba2be48febb6a4440bbc0f67c63f5c71dfc32d15\"\u003e\u003ccode\u003eba2be48\u003c/code\u003e\u003c/a\u003e Add simple EE file example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/737\"\u003e#737\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/4af7213490232d5b9fbf2576c6370fd40f75adc4\"\u003e\u003ccode\u003e4af7213\u003c/code\u003e\u003c/a\u003e 🧪🚑 Clone deep in integration tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/735\"\u003e#735\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/d12c45c01d08d337a72916cf4e1a48bac16a2bd5\"\u003e\u003ccode\u003ed12c45c\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/731\"\u003e#731\u003c/a\u003e/1b659226 backport][release_3.1] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5defa3c9f05cfc8212abd3da57926cdc29f7e45e\"\u003e\u003ccode\u003e5defa3c\u003c/code\u003e\u003c/a\u003e docs: Fixing typo in example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/705\"\u003e#705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/6fb2fc098de0092e05c238bc41f596629e9d6598\"\u003e\u003ccode\u003e6fb2fc0\u003c/code\u003e\u003c/a\u003e Fix doc errors in 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5efc3cfdd63cf1f60efec6d9e99ced47c9c2ce48\"\u003e\u003ccode\u003e5efc3cf\u003c/code\u003e\u003c/a\u003e Add 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/49b8a5fc4c9c4839cb57c03473f50bdc8d9a6ee8\"\u003e\u003ccode\u003e49b8a5f\u003c/code\u003e\u003c/a\u003e Modify scripts/check_galaxy to return more descriptive error message(s) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/695\"\u003e#695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-compat` from 24.8.0 to 24.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev24.10.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRe-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e) \u003ca href=\"https://github.com/irozet12\"\u003e\u003ccode\u003e@​irozet12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid running prepare ansible paths twice (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/409\"\u003e#409\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid duplicate paths when path injection (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/407\"\u003e#407\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide more detail on multiple collection installs (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/405\"\u003e#405\u003c/a\u003e) \u003ca href=\"https://github.com/mrgum\"\u003e\u003ccode\u003e@​mrgum\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd communication details (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/400\"\u003e#400\u003c/a\u003e) \u003ca href=\"https://github.com/oraNod\"\u003e\u003ccode\u003e@​oraNod\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix upload-artifact action to work with v4.4 and newer (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/403\"\u003e#403\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/ba624e9511a76f29fd12cff3e01feef1458d3acf\"\u003e\u003ccode\u003eba624e9\u003c/code\u003e\u003c/a\u003e Bump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/6d9524e282a0f5078dfdaf9d01e620493076496d\"\u003e\u003ccode\u003e6d9524e\u003c/code\u003e\u003c/a\u003e Add support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/264a2785eb278406a5b93b9c5a8a1979eee5cc11\"\u003e\u003ccode\u003e264a278\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/1f01f448542e4c258dfa1ed5ea84eab655ddc43b\"\u003e\u003ccode\u003e1f01f44\u003c/code\u003e\u003c/a\u003e Replace pip-compile with uv pip compile (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/43f75ebf417fa914da59f12781aecea6566822ed\"\u003e\u003ccode\u003e43f75eb\u003c/code\u003e\u003c/a\u003e Fix tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/29430b1fe77b02e4c7a5073cefb2a04a67fec338\"\u003e\u003ccode\u003e29430b1\u003c/code\u003e\u003c/a\u003e Tune dependabot config (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/e247f3fab0400f97df08498c9e2cdf34025f1ba8\"\u003e\u003ccode\u003ee247f3f\u003c/code\u003e\u003c/a\u003e Re-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/18c671e23c1d4fa91fd372fca24474b89e31832c\"\u003e\u003ccode\u003e18c671e\u003c/code\u003e\u003c/a\u003e Bump coactions/dynamic-matrix from 3 to 4 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/414\"\u003e#414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/ebe0b2c89717cf7567071b540461f878cefa8185\"\u003e\u003ccode\u003eebe0b2c\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/16538ab64884462d8afdf35b97cb1f02299cef69\"\u003e\u003ccode\u003e16538ab\u003c/code\u003e\u003c/a\u003e Add template for bug reports (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.8.0...v24.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-pygments` from 0.1.1 to 0.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/ansible-pygments/releases\"\u003eansible-pygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.1.2\u003c/h2\u003e\n\u003cp\u003eMaintenance release to ensure that releasing still works.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/cb4a39bef9e4a4169dce502f2f198016967506bb\"\u003e\u003ccode\u003ecb4a39b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/70\"\u003e#70\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/be3cc3b5e5d7264e842938197acca8d6434ec49f\"\u003e\u003ccode\u003ebe3cc3b\u003c/code\u003e\u003c/a\u003e Bump the ci group with 5 updates (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/73\"\u003e#73\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/2e506fd496d33cc3a34673555c5bb18e357d6214\"\u003e\u003ccode\u003e2e506fd\u003c/code\u003e\u003c/a\u003e Fix dependabot config. (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/72\"\u003e#72\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/5f5bc32fb5f6c8c96c1b13660365fee67f90f7b2\"\u003e\u003ccode\u003e5f5bc32\u003c/code\u003e\u003c/a\u003e Add dependabot config (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/73fac92d94987a1ab87ec5aa85db1a117a7785a8\"\u003e\u003ccode\u003e73fac92\u003c/code\u003e\u003c/a\u003e Fix CI: avoid deprecated poetry section, drop macOS and Windows from CI matri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/149a793087a789e6a1905716f69ebec77e610b25\"\u003e\u003ccode\u003e149a793\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/69\"\u003e#69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/bc64e01b0c536ec2cc03ffc470d65eae088632c0\"\u003e\u003ccode\u003ebc64e01\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/68\"\u003e#68\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/709e4e3109a0fc6eabcea757686d0d4635e1f549\"\u003e\u003ccode\u003e709e4e3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/67\"\u003e#67\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/dec1d0799c1f029532faefed2e1b25cb55d6aed8\"\u003e\u003ccode\u003edec1d07\u003c/code\u003e\u003c/a\u003e Require Python 3.9+; add Python 3.12 and 3.13 to CI (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/64\"\u003e#64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/c50df0f4486185b463a78fd4ad8d4cb68f1bac1f\"\u003e\u003ccode\u003ec50df0f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/66\"\u003e#66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/ansible-pygments/compare/0.1.1...0.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-changelog` from 0.29.0 to 0.35.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/releases\"\u003eantsibull-changelog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.35.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003c!-- raw HTML omitted --\u003eshort_description\u003c!-- raw HTML omitted --\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003eRSTDocumentRenderer\u003c!-- raw HTML omitted --\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.33.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003e--strict\u003c!-- raw HTML omitted --\u003e option of the \u003c!-- raw HTML omitted --\u003elint-changelog-yaml\u003c!-- raw HTML omitted --\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003c!-- raw HTML omitted --\u003e--is-collection\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--collection-flatmap\u003c!-- raw HTML omitted --\u003e will likely change to proper flags (\u003c!-- raw HTML omitted --\u003e--flag\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--no-flag`\u003c!-- raw HTML omitted --\u003e instead of \u003c!-- raw HTML omitted --\u003e--flag true\u003c!-- raw HTML omitted --\u003e/\u003c!-- raw HTML omitted --\u003e--flag false\u003c!-- raw HTML omitted --\u003e) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ecreate an issue in the antsibull-changelog repository\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.32.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMajor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe new configuration setting \u003c!-- raw HTML omitted --\u003eoutput\u003c!-- raw HTML omitted --\u003e allows to configure more precisely which changelog files are generated and how they are formatted (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/190\"\u003eansible-community/antsibull-changelog#190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/194\"\u003eansible-community/antsibull-changelog#194\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now depends on Pydantic 2 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAntsibull-changelog now uses Pydantic to parse and validate the config. This means that validation is more strict than before and might reject configs that were incorrect, but still got accepted somehow (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using antsibull-changelog as a library, \u003c!-- raw HTML omitted --\u003eChangelogConfig\u003c!-- raw HTML omitted --\u003e's constructor should no longer be called directly. Instead, use the class method \u003c!-- raw HTML omitted --\u003eChangelogConfig.parse()\u003c!-- raw HTML omitted --\u003e, which has the same signature than the previous constructor, except that \u003c!-- raw HTML omitted --\u003eignore_is_other_project\u003c!-- raw HTML omitted --\u003e now must be a keyword parameter (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/blob/main/CHANGELOG.rst\"\u003eantsibull-changelog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev0.35.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003ccode\u003eshort_description\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.34.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eRSTDocumentRenderer\u003c/code\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.33.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes / Porting Guide\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e--strict\u003c/code\u003e option of the \u003ccode\u003elint-changelog-yaml\u003c/code\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecated Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003ccode\u003e--is-collection\u003c/code\u003e and \u003ccode\u003e--collection-flatmap\u003c/code\u003e will likely change to proper flags (\u003ccode\u003e--flag\u003c/code\u003e and \u003ccode\u003e--no-flag`` instead of ``--flag true``/``--flag false``) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003c/code\u003ecreate an issue in the antsibull-changelog repository \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ehttps://github.com/ansible-community/antsibull-changelog/issues/new\u003c/a\u003e`__ (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.32.0\u003c/h1\u003e\n\u003cp\u003eRelease Summary\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/1fe0013d3e0441552d1cde8abd68329b687e7f72\"\u003e\u003ccode\u003e1fe0013\u003c/code\u003e\u003c/a\u003e Release 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/58abbe5ab70b7da33cd34d006af23adf6d361637\"\u003e\u003ccode\u003e58abbe5\u003c/code\u003e\u003c/a\u003e Prepare 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/3c861b0a7d4cf820da4c83d6f86db5071d29ef73\"\u003e\u003ccode\u003e3c861b0\u003c/code\u003e\u003c/a\u003e Process Ansible markup for module/plugin/role short_description (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/52f345cf51765075c2792abefd27ed9c7e7924df\"\u003e\u003ccode\u003e52f345c\u003c/code\u003e\u003c/a\u003e Adjust tests to changes in antsibull-fileutils.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/5fa16b580e912e1cfa009e8695f3f0ffb29f0b96\"\u003e\u003ccode\u003e5fa16b5\u003c/code\u003e\u003c/a\u003e Remove no longer necessary lint ignore.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2069da37431a5fe447cc3ababac67e8f8776df13\"\u003e\u003ccode\u003e2069da3\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/9c82eabac8ffadd097be0ff13691b45548b24b9b\"\u003e\u003ccode\u003e9c82eab\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.10.16 to 2025.11.12 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/372f87c01391a20f002f3d9bf564a8d340e6a124\"\u003e\u003ccode\u003e372f87c\u003c/code\u003e\u003c/a\u003e Adjust URLs. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2b1e1096ed7d9b2d98a422811c00013422eff927\"\u003e\u003ccode\u003e2b1e109\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.05.01 to 2025.10.16 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/e4148eea4cddd7c86da284f1a352ec01acd1e1f5\"\u003e\u003ccode\u003ee4148ee\u003c/code\u003e\u003c/a\u003e Support Python 3.14. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/compare/0.29.0...0.35.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-core` from 3.0.2 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-core/releases\"\u003eantsibull-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature and maintenance release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logging wrapper classes to simplify switch from twiggy to the standard logging framework (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/issues/39\"\u003eansible-community/antsibull-core#39\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/188\"\u003eansible-community/antsibull-core#188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/191\"\u003eansible-community/antsibull-core#191\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow information on removed or deprecated collections to be updated. This is needed to generate a consistent changelog (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/177\"\u003eansible-community/antsibull-core#17...\n\n_Description has been truncated_","html_url":"https://github.com/ansible/event-driven-ansible/pull/503","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible%2Fevent-driven-ansible/issues/503","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/503/packages"}},{"old_version":"2.2.0","new_version":"3.0.1","update_type":"major","path":"/llvm/docs","pr_created_at":"2026-01-03T11:21:03.000Z","version_change":"2.2.0 → 3.0.1","issue":{"uuid":"3777974319","node_id":"PR_kwDOQy9YA867XVtd","number":1,"state":"closed","title":"Bump the llvm-docs-requirements group in /llvm/docs with 29 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-02T01:36:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-03T11:21:03.000Z","updated_at":"2026-04-02T01:36:22.000Z","time_to_close":7654517,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":29,"packages":[{"name":"sphinx","old_version":"7.2.6","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"sphinx-automodapi","old_version":"0.17.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.8","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinx-reredirects","old_version":"0.1.2","new_version":"1.1.0","repository_url":"https://github.com/documatt/sphinx-reredirects"},{"name":"furo","old_version":"2024.1.29","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"myst-parser","old_version":"2.0.0","new_version":"4.0.1","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"packaging","old_version":"23.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"}],"path":"/llvm/docs","ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group in /llvm/docs with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.2.6` | `9.1.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.17.0` | `0.22.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.8` | `2.0.0` |\n| [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) | `0.1.2` | `1.1.0` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.1.29` | `2025.12.19` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `4.0.1` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.17.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `25.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.1` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.2` |\n\nUpdates `sphinx` from 7.2.6 to 9.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/releases\"\u003esphinx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSphinx 9.1.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://www.sphinx-doc.org/en/master/changes.html\"\u003ehttps://www.sphinx-doc.org/en/master/changes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eadd_static_dir()\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  sphinxsetup.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst\"\u003esphinx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 9.1.0 (released Dec 31, 2025)\u003c/h1\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003e~sphinx.application.Sphinx.add_static_dir\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  :ref:\u003ccode\u003e'sphinxsetup' \u0026lt;latexsphinxsetup\u0026gt;\u003c/code\u003e.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/cc7c6f435ad37bb12264f8118c8461b230e6830c\"\u003e\u003ccode\u003ecc7c6f4\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/b127b9478aa4654a82eeadf1a1e89715d3927608\"\u003e\u003ccode\u003eb127b94\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eapp.add_static_dir()\u003c/code\u003e for copying extension static files (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14219\"\u003e#14219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/20f1c46790d370b50fa7396cca3e1cc658ce9f89\"\u003e\u003ccode\u003e20f1c46\u003c/code\u003e\u003c/a\u003e LaTeX: Inhibit breaks for rows with merged vertical cells (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14227\"\u003e#14227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/3c85411fd06a1c3026f7991818312e5358ef52e5\"\u003e\u003ccode\u003e3c85411\u003c/code\u003e\u003c/a\u003e Polish CHANGES.rst (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14225\"\u003e#14225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/9ee5446c6cfb997a6b92f5cfb84d045ec947417a\"\u003e\u003ccode\u003e9ee5446\u003c/code\u003e\u003c/a\u003e LaTeX: restore 1.7 documentation of literalblockcappos (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14224\"\u003e#14224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d75d602005be7567abc7741ee777f6f8c302d827\"\u003e\u003ccode\u003ed75d602\u003c/code\u003e\u003c/a\u003e LaTeX: improve (again...) some code comments in time for 9.1.0 (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14222\"\u003e#14222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8dca61d69a4a05c56702980e4f6cbe6451dd9ebc\"\u003e\u003ccode\u003e8dca61d\u003c/code\u003e\u003c/a\u003e Improve some LaTeX code comments (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8ab960098a8e12b8893bd3ceafc394759118346b\"\u003e\u003ccode\u003e8ab9600\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d59b2375945ed04414a11b0adb3e5655525f3e9e\"\u003e\u003ccode\u003ed59b237\u003c/code\u003e\u003c/a\u003e autodoc: Improve support for non-weakreferencable objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/964424b3dbc92ed1718272fd45123878f3eec14d\"\u003e\u003ccode\u003e964424b\u003c/code\u003e\u003c/a\u003e Use the correct reference for using existing extensions (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14157\"\u003e#14157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v9.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-automodapi` from 0.17.0 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/releases\"\u003esphinx-automodapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: removing python 3.9 support by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/229\"\u003eastropy/sphinx-automodapi#229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSphinx9 compatibility patch by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/232\"\u003eastropy/sphinx-automodapi#232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI: adding sphinx 8.2 to the matrix by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/212\"\u003eastropy/sphinx-automodapi#212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: dropping support for python 3.8 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/213\"\u003eastropy/sphinx-automodapi#213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor updates by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/211\"\u003eastropy/sphinx-automodapi#211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: fix assignment for sphinxdev (9.0) compatibility by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/215\"\u003eastropy/sphinx-automodapi#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor cleanup of unsupported sphinx workarounds by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/216\"\u003eastropy/sphinx-automodapi#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding Python 3.14 for testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/217\"\u003eastropy/sphinx-automodapi#217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove get_documenter over from Sphinx by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/220\"\u003eastropy/sphinx-automodapi#220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incomplete cleanup in autodoc_enhancements.py by \u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: drop deprecated License classifier, update related metadata (PEP 639) by \u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding the new sphinx 9.0 release to the testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/228\"\u003eastropy/sphinx-automodapi#228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields (continuation of stale PR, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/116\"\u003eastropy/sphinx-automodapi#116\u003c/a\u003e) by \u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: adding python 3.13 to the tests by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/191\"\u003eastropy/sphinx-automodapi#191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Use hash for Action workflow versions and update if needed by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/192\"\u003eastropy/sphinx-automodapi#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompatibility with Sphinx 8.2, minor clean up by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/196\"\u003eastropy/sphinx-automodapi#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Unpin outdated RTD sphinx maxversion by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/199\"\u003eastropy/sphinx-automodapi#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/blob/main/CHANGES.rst\"\u003esphinx-automodapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.0 (2025-12-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.10. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixing deprecation introduced in Sphinx 9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0 (2025-12-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 9.0. [#215, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/224\"\u003e#224\u003c/a\u003e]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Sphinx version is now 5. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.20.0 (2025-06-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/208\"\u003e#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19.0 (2025-04-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eautomodsumm_properties_are_attributes\u003c/code\u003e configuration to control if\nclass properties are treated with \u003ccode\u003eautoattribute\u003c/code\u003e or \u003ccode\u003eautoproperty\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/197\"\u003e#197\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 8.2. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/196\"\u003e#196\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.18.0 (2024-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where items defined in \u003ccode\u003e__all__\u003c/code\u003e but originally imported\nfrom elsewhere, e.g. a private module, were not documented. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/190\"\u003e#190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/04390ab012a02353a887ffd3504b49936bcad46b\"\u003e\u003ccode\u003e04390ab\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/038da98982c351494f787004b3ed5ce283f9bb77\"\u003e\u003ccode\u003e038da98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e from pllim/sphinx10-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/b46c8d6003a36d7e08e7481b94e4b97cc519a408\"\u003e\u003ccode\u003eb46c8d6\u003c/code\u003e\u003c/a\u003e Apply suggestions from code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/24920e7cf29d3a13fdf6e279446492b4562f2da2\"\u003e\u003ccode\u003e24920e7\u003c/code\u003e\u003c/a\u003e Add change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/0f645e8c2c5ebb5a74d572912e8ce9499857d7f2\"\u003e\u003ccode\u003e0f645e8\u003c/code\u003e\u003c/a\u003e Address RemovedInSphinx10Warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/a3bdc2f3c6b42e885ac9b2f1ac75881df1496b5a\"\u003e\u003ccode\u003ea3bdc2f\u003c/code\u003e\u003c/a\u003e Add SPHINX_LT_10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/972c9fb255b8aadd86ac677a280e81b7593ddbb0\"\u003e\u003ccode\u003e972c9fb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e from bsipocz/MAINT_remote_py39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/7503d7a0e119f1b8c629f307baeda771db865474\"\u003e\u003ccode\u003e7503d7a\u003c/code\u003e\u003c/a\u003e DOC: adding changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/5905fd558656bf1307bacd58617473ceea7706d0\"\u003e\u003ccode\u003e5905fd5\u003c/code\u003e\u003c/a\u003e MAINT: some more post sphinx 9.0 cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/120a6059cbfd5ca3898efc6fc930b4a305dcecb6\"\u003e\u003ccode\u003e120a605\u003c/code\u003e\u003c/a\u003e MAINT: dropping support for python 3.9\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.17.0...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinxcontrib-applehelp` from 1.0.8 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/releases\"\u003esphinxcontrib-applehelp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esphinxcontrib-applehelp 2.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003ehttps://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003esphinxcontrib-applehelp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 2.0.0 (2024-07-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdopt Ruff\u003c/li\u003e\n\u003cli\u003eTighten MyPy settings\u003c/li\u003e\n\u003cli\u003eUpdate GitHub actions versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/f4f9d900b238d03da601bf7c75cff5bcbcee6d7c\"\u003e\u003ccode\u003ef4f9d90\u003c/code\u003e\u003c/a\u003e Bump to 2.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/a3e76fcf6c65a18053cf865abc6d05f7598bf410\"\u003e\u003ccode\u003ea3e76fc\u003c/code\u003e\u003c/a\u003e Update CHANGES links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/2292a12982a0b6d58d26747988c069cedbfdc2a5\"\u003e\u003ccode\u003e2292a12\u003c/code\u003e\u003c/a\u003e Rename LICENSE to LICENCE.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/e9efbd43069975476284fe8fd95da3c01271bf77\"\u003e\u003ccode\u003ee9efbd4\u003c/code\u003e\u003c/a\u003e Rename CHANGES to CHANGES.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/0544c40957dafb453ce3fdff09768de9dc21a344\"\u003e\u003ccode\u003e0544c40\u003c/code\u003e\u003c/a\u003e Run CI with Python 3.12 releases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/4e9b50579ecd5f4198ca999461d81569dccecf8f\"\u003e\u003ccode\u003e4e9b505\u003c/code\u003e\u003c/a\u003e Run mypy without command-line options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5f01d2783e68d691f086401af7d69b8c526fc859\"\u003e\u003ccode\u003e5f01d27\u003c/code\u003e\u003c/a\u003e Use the latest GitHub actions versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5b535000130cdea7a24c00f9ea5b5b5a34ccc30b\"\u003e\u003ccode\u003e5b53500\u003c/code\u003e\u003c/a\u003e Enable GitHub's dependabot package update service\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/d51bb2b03d2ee12a997741626a79c0ad2f8716e7\"\u003e\u003ccode\u003ed51bb2b\u003c/code\u003e\u003c/a\u003e Adopt Ruff and use stricter MyPy settings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/fbc12daa3b908d67bf899a129c98c12f03031f27\"\u003e\u003ccode\u003efbc12da\u003c/code\u003e\u003c/a\u003e Update .gitignore\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/compare/1.0.8...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-reredirects` from 0.1.2 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/documatt/sphinx-reredirects/blob/main/docs/changelog.rst\"\u003esphinx-reredirects's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.1.0 (2025-12-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003esupport Sphinx 9.0 and above\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.0.0 (2025-05-31)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eA maintenance release with no new features, but with important code clean-up, dependency update, and modernization.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erequire Python \u0026gt;= 3.11\u003c/li\u003e\n\u003cli\u003erequire Sphinx \u0026gt;= 7.4\u003c/li\u003e\n\u003cli\u003echange license from BSD3 to MIT\u003c/li\u003e\n\u003cli\u003emigrate from pip to uv\u003c/li\u003e\n\u003cli\u003emigrate from tox to nox\u003c/li\u003e\n\u003cli\u003emigrate from Build/Twine to Flit\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.6 (2025-03-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: preserve URL fragments in redirects (the \u003ccode\u003e#foo\u003c/code\u003e in \u003ccode\u003ehttps://example.com/docs#foo\u003c/code\u003e) (\u003ccode\u003eissue [#11](https://github.com/documatt/sphinx-reredirects/issues/11) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/11\u0026gt;\u003c/code\u003e_ by \u003ccode\u003eDavid Ekete \u0026lt;https://github.com/davidekete\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: force lint, format, and test with pre-commit hooks\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.5 (2024-07-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: check redirect to external URLs for invalid or non-existing addresses with standard linkcheck builder (\u003ccode\u003eissue [#3](https://github.com/documatt/sphinx-reredirects/issues/3) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/3\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eJean Abou Samra \u0026lt;https://github.com/jeanas\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: requires Sphinx 7.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.4 (2024-06-21)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ccode\u003eEncodingWarning: 'encoding' argument not specified\u003c/code\u003e (\u003ccode\u003eissue [#5](https://github.com/documatt/sphinx-reredirects/issues/5) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/5\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eAnderson Bravalheri \u0026lt;https://github.com/abravalheri\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.3 (2023-11-03)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eNo new features, maintenance release. Contains only fixed URLs because \u003ccode\u003ethe project lives now GitHub \u0026lt;https://github.com/documatt/sphinx-reredirects/\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c73481d284833b755728b5b8ad75e37922d30a13\"\u003e\u003ccode\u003ec73481d\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c699443dbe0bf309e6e2132af8c3269ebb8fd9d5\"\u003e\u003ccode\u003ec699443\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/4644bc1f035e8cdbb211ec9fc784d8d086362129\"\u003e\u003ccode\u003e4644bc1\u003c/code\u003e\u003c/a\u003e feat: change GTM container\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/6f09582ed6de68bd3e2ba2b1099ef8ea7d79cc68\"\u003e\u003ccode\u003e6f09582\u003c/code\u003e\u003c/a\u003e fix: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/7c01dedb843b3b8ae256a5082d8967e622eb1960\"\u003e\u003ccode\u003e7c01ded\u003c/code\u003e\u003c/a\u003e ci: run tests on pull requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/47a6444c9b247fe8f911e4aa84965ebde33e33a1\"\u003e\u003ccode\u003e47a6444\u003c/code\u003e\u003c/a\u003e feat: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/bc47062386d27c12dbf3d9baa8a011c2855c0628\"\u003e\u003ccode\u003ebc47062\u003c/code\u003e\u003c/a\u003e docs: theme from Git instead of .whl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/2a57e7ec09034b98ee56e6aa5e55cdb66a21424c\"\u003e\u003ccode\u003e2a57e7e\u003c/code\u003e\u003c/a\u003e fix: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/9f6918ddb33dff57f457ab0ddb61f1004670b5ca\"\u003e\u003ccode\u003e9f6918d\u003c/code\u003e\u003c/a\u003e feat: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/496390436ed32046052cca73e18bf4a5b9b20cea\"\u003e\u003ccode\u003e4963904\u003c/code\u003e\u003c/a\u003e ci: fix URL to real PyPI\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/documatt/sphinx-reredirects/compare/v0.1.2...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.1.29 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.01.29...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 2.0.0 to 4.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Minor fix for sphinx 8.2 compat by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1013\"\u003eexecutablebooks/MyST-Parser#1013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧪 Add CI testing support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/955\"\u003eexecutablebooks/MyST-Parser#955\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter by \u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Fix typos discovered by codespell by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 remove redundant paragraph by \u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e by \u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support python\u0026gt;=3.10, sphinx \u0026gt;=7,\u0026lt;9, docutils\u0026gt;=0.19,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/952\"\u003eexecutablebooks/MyST-Parser#952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve footnote def/ref warnings and translations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/931\"\u003eexecutablebooks/MyST-Parser#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX empty value for final directive option by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/924\"\u003eexecutablebooks/MyST-Parser#924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 FIX: allow indented option block by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/925\"\u003eexecutablebooks/MyST-Parser#925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/848\"\u003eexecutablebooks/MyST-Parser#848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/916\"\u003eexecutablebooks/MyST-Parser#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.1 - 2025-02-12\u003c/h2\u003e\n\u003cp\u003e🔧 Minor fix for Sphinx 8.2 compatibility (in \u003ca href=\"gh-pr:1013\"\u003egh-pr:1013\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e4.0.0 - 2024-08-05\u003c/h2\u003e\n\u003cp\u003eThis release bumps the supported versions of:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython to \u003ccode\u003e3.10\u003c/code\u003e and greater\u003c/li\u003e\n\u003cli\u003eSphinx to \u003ccode\u003e\u0026gt;=7,\u0026lt;9\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocutils to \u003ccode\u003e\u0026gt;=0.19,\u0026lt;0.22\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, footnotes are now parsed similar to the corresponding reStructuredText, in that resolution (between definitions and references) and ordering is now deferred to transforms on the doctree (in \u003ca href=\"gh-pr:931\"\u003egh-pr:931\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis allows for the proper interaction with other docutils/sphinx transforms, including those that perform translations,\nand logging of warnings for duplicate/unreferenced footnote definitions and also for footnote references with no definitions.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/#syntax/footnotes\"\u003efootnotes guide\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ev3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.1 - 2024-04-28\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccount for the final directive option having an empty value, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:924\"\u003egh-pr:924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-allow indented directive option blocks, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:925\"\u003egh-pr:925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ev3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.0 - 2024-04-23\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"gh-user:hugovk\"\u003egh-user:hugovk\u003c/a\u003e in \u003ca href=\"gh-pr:848\"\u003egh-pr:848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:916\"\u003egh-pr:916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Allow for use of the \u003ccode\u003eline-block\u003c/code\u003e directive by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:900\"\u003egh-pr:900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Emits sphinx include-read event by \u003ca href=\"gh-user:sumezulike\"\u003egh-user:sumezulike\u003c/a\u003e in \u003ca href=\"gh-pr:887\"\u003egh-pr:887\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Nested parse attribution in \u003ccode\u003eattr_block\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:831\"\u003egh-pr:831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Directive option parsing by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u0026lt;gh-pr:796\u003c/li\u003e\n\u003cli\u003e👌 Improve directive parsing warnings by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:893\"\u003egh-pr:893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Allow for opening external links in new tabs (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/856\"\u003e#856\u003c/a\u003e) by \u003ca href=\"gh-user:marjus45\"\u003egh-user:marjus45\u003c/a\u003e in \u003ca href=\"gh-pr:857\"\u003egh-pr:857\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/8a44f5d35197b19aab2f1fe35b6f1dce4960bce5\"\u003e\u003ccode\u003e8a44f5d\u003c/code\u003e\u003c/a\u003e 🚀 Release v4.0.1 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1022\"\u003e#1022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/fbb7f1d9b33b39e48b4bbe4107174c32f4397698\"\u003e\u003ccode\u003efbb7f1d\u003c/code\u003e\u003c/a\u003e 🔧 Minor fix for sphinx 8.2 compat (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/04375589259c3e6e9d6cfb2d479be98fe3cb630a\"\u003e\u003ccode\u003e0437558\u003c/code\u003e\u003c/a\u003e 🔧 update pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1006\"\u003e#1006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/b58737f4a18045a0fc80bfc78539a688462cce62\"\u003e\u003ccode\u003eb58737f\u003c/code\u003e\u003c/a\u003e ⬆️ Update pre-commit requirement from ~=3.0 to ~=4.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f62025fc7d29fd37c3dc46d15a19a62fe6158a16\"\u003e\u003ccode\u003ef62025f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/14ea197b79466bf0ab2204a7cfa05e9cc9619051\"\u003e\u003ccode\u003e14ea197\u003c/code\u003e\u003c/a\u003e 📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/bc3579430f9974770ddb428ad395457e10055097\"\u003e\u003ccode\u003ebc35794\u003c/code\u003e\u003c/a\u003e 📚 remove redundant paragraph (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/9fe724ebf1d02fd979632d82387f802c91e0d6f6\"\u003e\u003ccode\u003e9fe724e\u003c/code\u003e\u003c/a\u003e 🧪 Fix tests for latest sphinx (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/59b5386f92f54241d0036e0726e93b4086970e03\"\u003e\u003ccode\u003e59b5386\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/6bcba98ef33edd43339ee2db7426466cab0053a1\"\u003e\u003ccode\u003e6bcba98\u003c/code\u003e\u003c/a\u003e 🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v2.0.0...v4.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003eLiteral\u003c/code\u003e from the typing module by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1175\"\u003epython-babel/babel#1175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrefer LC_MONETARY when formatting currencies by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1173\"\u003epython-babel/babel#1173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dates formatting \u003ccode\u003eY\u003c/code\u003e, \u003ccode\u003ew\u003c/code\u003e and \u003ccode\u003eW\u003c/code\u003e symbols for week-numbering by \u003ca href=\"https://github.com/jun66j5\"\u003e\u003ccode\u003e@​jun66j5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1179\"\u003epython-babel/babel#1179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage of the \u003ccode\u003epython_format\u003c/code\u003e checker by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1176\"\u003epython-babel/babel#1176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 2.17.0 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1182\"\u003epython-babel/babel#1182\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium.\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old,\nand here's to another great year of inter...\n\n_Description has been truncated_","html_url":"https://github.com/xiaoyu-hhh/test-llvm/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaoyu-hhh%2Ftest-llvm/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"2.2.0","new_version":"3.0.1","update_type":"major","path":"/llvm/docs","pr_created_at":"2026-01-01T22:11:54.000Z","version_change":"2.2.0 → 3.0.1","issue":{"uuid":"3775275422","node_id":"PR_kwDODfJSfM67O3Qo","number":386,"state":"closed","title":"Bump the llvm-docs-requirements group in /llvm/docs with 29 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-12T15:25:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T22:11:54.000Z","updated_at":"2026-02-12T15:25:18.000Z","time_to_close":3604399,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"llvm-docs-requirements","update_count":29,"packages":[{"name":"sphinx","old_version":"7.2.6","new_version":"9.1.0","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"sphinx-automodapi","old_version":"0.17.0","new_version":"0.22.0","repository_url":"https://github.com/astropy/sphinx-automodapi"},{"name":"sphinxcontrib-applehelp","old_version":"1.0.8","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-applehelp"},{"name":"sphinx-reredirects","old_version":"0.1.2","new_version":"1.1.0","repository_url":"https://github.com/documatt/sphinx-reredirects"},{"name":"furo","old_version":"2024.1.29","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"myst-parser","old_version":"2.0.0","new_version":"4.0.1","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"alabaster","old_version":"0.7.13","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"babel","old_version":"2.14.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"beautifulsoup4","old_version":"4.12.2","new_version":"4.14.3"},{"name":"certifi","old_version":"2023.11.17","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"idna","old_version":"3.6","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markdown","old_version":"3.5.1","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.0","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"packaging","old_version":"23.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.17.2","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.5","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinxcontrib-devhelp","old_version":"1.0.5","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-devhelp"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.4","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"sphinxcontrib-qthelp","old_version":"1.0.6","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-qthelp"},{"name":"sphinxcontrib-serializinghtml","old_version":"1.1.9","new_version":"2.0.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-serializinghtml"},{"name":"urllib3","old_version":"2.1.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"}],"path":"/llvm/docs","ecosystem":"pip"},"body":"Bumps the llvm-docs-requirements group in /llvm/docs with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.2.6` | `9.1.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [sphinx-automodapi](https://github.com/astropy/sphinx-automodapi) | `0.17.0` | `0.22.0` |\n| [sphinxcontrib-applehelp](https://github.com/sphinx-doc/sphinxcontrib-applehelp) | `1.0.8` | `2.0.0` |\n| [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) | `0.1.2` | `1.1.0` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.1.29` | `2025.12.19` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `2.0.0` | `4.0.1` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.13` | `1.0.0` |\n| [babel](https://github.com/python-babel/babel) | `2.14.0` | `2.17.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.12.2` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.11.17` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [idna](https://github.com/kjd/idna) | `3.6` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.5.1` | `3.10` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.0` | `0.5.0` |\n| [packaging](https://github.com/pypa/packaging) | `23.2` | `25.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.17.2` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.5` | `2.8.1` |\n| [sphinxcontrib-devhelp](https://github.com/sphinx-doc/sphinxcontrib-devhelp) | `1.0.5` | `2.0.0` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.4` | `2.1.0` |\n| [sphinxcontrib-qthelp](https://github.com/sphinx-doc/sphinxcontrib-qthelp) | `1.0.6` | `2.0.0` |\n| [sphinxcontrib-serializinghtml](https://github.com/sphinx-doc/sphinxcontrib-serializinghtml) | `1.1.9` | `2.0.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.1.0` | `2.6.2` |\n\nUpdates `sphinx` from 7.2.6 to 9.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/releases\"\u003esphinx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSphinx 9.1.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://www.sphinx-doc.org/en/master/changes.html\"\u003ehttps://www.sphinx-doc.org/en/master/changes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eadd_static_dir()\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  sphinxsetup.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst\"\u003esphinx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 9.1.0 (released Dec 31, 2025)\u003c/h1\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14153\"\u003e#14153\u003c/a\u003e: Drop Python 3.11 support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/12555\"\u003e#12555\u003c/a\u003e: Drop Docutils 0.20 support.\nPatch by Adam Turner\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003e~sphinx.application.Sphinx.add_static_dir\u003c/code\u003e for copying static\nassets from extensions to the build output.\nPatch by Jared Dillard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14189\"\u003e#14189\u003c/a\u003e: autodoc: Fix duplicate \u003ccode\u003e:no-index-entry:\u003c/code\u003e for modules.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/13713\"\u003e#13713\u003c/a\u003e: Fix compatibility with MyST-Parser.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.15.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Fix default option parsing.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eRemove incorrect static typing assertions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14050\"\u003e#14050\u003c/a\u003e: LaTeXTranslator fails to build documents using the \u0026quot;acronym\u0026quot;\nstandard role.\nPatch by Günter Milde\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix rendering for grid filled merged vertical cell.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14228\"\u003e#14228\u003c/a\u003e: LaTeX: Fix overrun footer for cases of merged vertical table cells.\nPatch by Tim Nordell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14207\"\u003e#14207\u003c/a\u003e: Fix creating \u003ccode\u003eHTMLThemeFactory\u003c/code\u003e objects in third-party extensions.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/3099\"\u003e#3099\u003c/a\u003e: LaTeX: PDF build crashes if a code-block contains more than\ncirca 1350 codelines (about 27 a4-sized pages at default pointsize).\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14064\"\u003e#14064\u003c/a\u003e: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.\nPatch by Jean-François B.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14089\"\u003e#14089\u003c/a\u003e: autodoc: Improve support for non-weakreferencable objects.\nPatch by Adam Turner\u003c/li\u003e\n\u003cli\u003eLaTeX: Fix accidental removal at \u003ccode\u003e3.5.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/8854\"\u003e#8854\u003c/a\u003e) of the documentation of\n\u003ccode\u003eliteralblockcappos\u003c/code\u003e key of  :ref:\u003ccode\u003e'sphinxsetup' \u0026lt;latexsphinxsetup\u0026gt;\u003c/code\u003e.\nPatch by Jean-François B.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/cc7c6f435ad37bb12264f8118c8461b230e6830c\"\u003e\u003ccode\u003ecc7c6f4\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/b127b9478aa4654a82eeadf1a1e89715d3927608\"\u003e\u003ccode\u003eb127b94\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eapp.add_static_dir()\u003c/code\u003e for copying extension static files (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14219\"\u003e#14219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/20f1c46790d370b50fa7396cca3e1cc658ce9f89\"\u003e\u003ccode\u003e20f1c46\u003c/code\u003e\u003c/a\u003e LaTeX: Inhibit breaks for rows with merged vertical cells (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14227\"\u003e#14227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/3c85411fd06a1c3026f7991818312e5358ef52e5\"\u003e\u003ccode\u003e3c85411\u003c/code\u003e\u003c/a\u003e Polish CHANGES.rst (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14225\"\u003e#14225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/9ee5446c6cfb997a6b92f5cfb84d045ec947417a\"\u003e\u003ccode\u003e9ee5446\u003c/code\u003e\u003c/a\u003e LaTeX: restore 1.7 documentation of literalblockcappos (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14224\"\u003e#14224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d75d602005be7567abc7741ee777f6f8c302d827\"\u003e\u003ccode\u003ed75d602\u003c/code\u003e\u003c/a\u003e LaTeX: improve (again...) some code comments in time for 9.1.0 (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14222\"\u003e#14222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8dca61d69a4a05c56702980e4f6cbe6451dd9ebc\"\u003e\u003ccode\u003e8dca61d\u003c/code\u003e\u003c/a\u003e Improve some LaTeX code comments (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/8ab960098a8e12b8893bd3ceafc394759118346b\"\u003e\u003ccode\u003e8ab9600\u003c/code\u003e\u003c/a\u003e Bump to 9.1.0 candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/d59b2375945ed04414a11b0adb3e5655525f3e9e\"\u003e\u003ccode\u003ed59b237\u003c/code\u003e\u003c/a\u003e autodoc: Improve support for non-weakreferencable objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx/commit/964424b3dbc92ed1718272fd45123878f3eec14d\"\u003e\u003ccode\u003e964424b\u003c/code\u003e\u003c/a\u003e Use the correct reference for using existing extensions (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx/issues/14157\"\u003e#14157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v9.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.20.1 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-automodapi` from 0.17.0 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/releases\"\u003esphinx-automodapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: removing python 3.9 support by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/229\"\u003eastropy/sphinx-automodapi#229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSphinx9 compatibility patch by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/232\"\u003eastropy/sphinx-automodapi#232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.21.0...v0.22.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI: adding sphinx 8.2 to the matrix by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/212\"\u003eastropy/sphinx-automodapi#212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: dropping support for python 3.8 by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/213\"\u003eastropy/sphinx-automodapi#213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor updates by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/211\"\u003eastropy/sphinx-automodapi#211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: fix assignment for sphinxdev (9.0) compatibility by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/215\"\u003eastropy/sphinx-automodapi#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: minor cleanup of unsupported sphinx workarounds by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/216\"\u003eastropy/sphinx-automodapi#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding Python 3.14 for testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/217\"\u003eastropy/sphinx-automodapi#217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove get_documenter over from Sphinx by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/220\"\u003eastropy/sphinx-automodapi#220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incomplete cleanup in autodoc_enhancements.py by \u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: drop deprecated License classifier, update related metadata (PEP 639) by \u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: adding the new sphinx 9.0 release to the testing by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/228\"\u003eastropy/sphinx-automodapi#228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner\"\u003e\u003ccode\u003e@​AA-Turner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/224\"\u003eastropy/sphinx-automodapi#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neutrinoceros\"\u003e\u003ccode\u003e@​neutrinoceros\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/225\"\u003eastropy/sphinx-automodapi#225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.20.0...v0.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields (continuation of stale PR, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/116\"\u003eastropy/sphinx-automodapi#116\u003c/a\u003e) by \u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lpsinger\"\u003e\u003ccode\u003e@​lpsinger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/208\"\u003eastropy/sphinx-automodapi#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\"\u003ehttps://github.com/astropy/sphinx-automodapi/compare/v0.19.0...v0.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMAINT: adding python 3.13 to the tests by \u003ca href=\"https://github.com/bsipocz\"\u003e\u003ccode\u003e@​bsipocz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/191\"\u003eastropy/sphinx-automodapi#191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Use hash for Action workflow versions and update if needed by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/192\"\u003eastropy/sphinx-automodapi#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompatibility with Sphinx 8.2, minor clean up by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/196\"\u003eastropy/sphinx-automodapi#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Unpin outdated RTD sphinx maxversion by \u003ca href=\"https://github.com/pllim\"\u003e\u003ccode\u003e@​pllim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/pull/199\"\u003eastropy/sphinx-automodapi#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astropy/sphinx-automodapi/blob/main/CHANGES.rst\"\u003esphinx-automodapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.0 (2025-12-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.10. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixing deprecation introduced in Sphinx 9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0 (2025-12-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 9.0. [#215, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/224\"\u003e#224\u003c/a\u003e]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Python version is now 3.9. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinimum supported Sphinx version is now 5. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/213\"\u003e#213\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.20.0 (2025-06-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for non-default dataclass fields. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/208\"\u003e#208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19.0 (2025-04-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eautomodsumm_properties_are_attributes\u003c/code\u003e configuration to control if\nclass properties are treated with \u003ccode\u003eautoattribute\u003c/code\u003e or \u003ccode\u003eautoproperty\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/197\"\u003e#197\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes compatibility with Sphinx 8.2. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/196\"\u003e#196\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.18.0 (2024-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where items defined in \u003ccode\u003e__all__\u003c/code\u003e but originally imported\nfrom elsewhere, e.g. a private module, were not documented. \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/190\"\u003e#190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/04390ab012a02353a887ffd3504b49936bcad46b\"\u003e\u003ccode\u003e04390ab\u003c/code\u003e\u003c/a\u003e Finalizing changelog for v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/038da98982c351494f787004b3ed5ce283f9bb77\"\u003e\u003ccode\u003e038da98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/232\"\u003e#232\u003c/a\u003e from pllim/sphinx10-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/b46c8d6003a36d7e08e7481b94e4b97cc519a408\"\u003e\u003ccode\u003eb46c8d6\u003c/code\u003e\u003c/a\u003e Apply suggestions from code review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/24920e7cf29d3a13fdf6e279446492b4562f2da2\"\u003e\u003ccode\u003e24920e7\u003c/code\u003e\u003c/a\u003e Add change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/0f645e8c2c5ebb5a74d572912e8ce9499857d7f2\"\u003e\u003ccode\u003e0f645e8\u003c/code\u003e\u003c/a\u003e Address RemovedInSphinx10Warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/a3bdc2f3c6b42e885ac9b2f1ac75881df1496b5a\"\u003e\u003ccode\u003ea3bdc2f\u003c/code\u003e\u003c/a\u003e Add SPHINX_LT_10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/972c9fb255b8aadd86ac677a280e81b7593ddbb0\"\u003e\u003ccode\u003e972c9fb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/astropy/sphinx-automodapi/issues/229\"\u003e#229\u003c/a\u003e from bsipocz/MAINT_remote_py39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/7503d7a0e119f1b8c629f307baeda771db865474\"\u003e\u003ccode\u003e7503d7a\u003c/code\u003e\u003c/a\u003e DOC: adding changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/5905fd558656bf1307bacd58617473ceea7706d0\"\u003e\u003ccode\u003e5905fd5\u003c/code\u003e\u003c/a\u003e MAINT: some more post sphinx 9.0 cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astropy/sphinx-automodapi/commit/120a6059cbfd5ca3898efc6fc930b4a305dcecb6\"\u003e\u003ccode\u003e120a605\u003c/code\u003e\u003c/a\u003e MAINT: dropping support for python 3.9\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astropy/sphinx-automodapi/compare/v0.17.0...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinxcontrib-applehelp` from 1.0.8 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/releases\"\u003esphinxcontrib-applehelp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esphinxcontrib-applehelp 2.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003ehttps://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/blob/master/CHANGES.rst\"\u003esphinxcontrib-applehelp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 2.0.0 (2024-07-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdopt Ruff\u003c/li\u003e\n\u003cli\u003eTighten MyPy settings\u003c/li\u003e\n\u003cli\u003eUpdate GitHub actions versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/f4f9d900b238d03da601bf7c75cff5bcbcee6d7c\"\u003e\u003ccode\u003ef4f9d90\u003c/code\u003e\u003c/a\u003e Bump to 2.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/a3e76fcf6c65a18053cf865abc6d05f7598bf410\"\u003e\u003ccode\u003ea3e76fc\u003c/code\u003e\u003c/a\u003e Update CHANGES links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/2292a12982a0b6d58d26747988c069cedbfdc2a5\"\u003e\u003ccode\u003e2292a12\u003c/code\u003e\u003c/a\u003e Rename LICENSE to LICENCE.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/e9efbd43069975476284fe8fd95da3c01271bf77\"\u003e\u003ccode\u003ee9efbd4\u003c/code\u003e\u003c/a\u003e Rename CHANGES to CHANGES.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/0544c40957dafb453ce3fdff09768de9dc21a344\"\u003e\u003ccode\u003e0544c40\u003c/code\u003e\u003c/a\u003e Run CI with Python 3.12 releases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/4e9b50579ecd5f4198ca999461d81569dccecf8f\"\u003e\u003ccode\u003e4e9b505\u003c/code\u003e\u003c/a\u003e Run mypy without command-line options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5f01d2783e68d691f086401af7d69b8c526fc859\"\u003e\u003ccode\u003e5f01d27\u003c/code\u003e\u003c/a\u003e Use the latest GitHub actions versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/5b535000130cdea7a24c00f9ea5b5b5a34ccc30b\"\u003e\u003ccode\u003e5b53500\u003c/code\u003e\u003c/a\u003e Enable GitHub's dependabot package update service\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/d51bb2b03d2ee12a997741626a79c0ad2f8716e7\"\u003e\u003ccode\u003ed51bb2b\u003c/code\u003e\u003c/a\u003e Adopt Ruff and use stricter MyPy settings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/commit/fbc12daa3b908d67bf899a129c98c12f03031f27\"\u003e\u003ccode\u003efbc12da\u003c/code\u003e\u003c/a\u003e Update .gitignore\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinxcontrib-applehelp/compare/1.0.8...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-reredirects` from 0.1.2 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/documatt/sphinx-reredirects/blob/main/docs/changelog.rst\"\u003esphinx-reredirects's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.1.0 (2025-12-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003esupport Sphinx 9.0 and above\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.0.0 (2025-05-31)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eA maintenance release with no new features, but with important code clean-up, dependency update, and modernization.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erequire Python \u0026gt;= 3.11\u003c/li\u003e\n\u003cli\u003erequire Sphinx \u0026gt;= 7.4\u003c/li\u003e\n\u003cli\u003echange license from BSD3 to MIT\u003c/li\u003e\n\u003cli\u003emigrate from pip to uv\u003c/li\u003e\n\u003cli\u003emigrate from tox to nox\u003c/li\u003e\n\u003cli\u003emigrate from Build/Twine to Flit\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.6 (2025-03-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: preserve URL fragments in redirects (the \u003ccode\u003e#foo\u003c/code\u003e in \u003ccode\u003ehttps://example.com/docs#foo\u003c/code\u003e) (\u003ccode\u003eissue [#11](https://github.com/documatt/sphinx-reredirects/issues/11) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/11\u0026gt;\u003c/code\u003e_ by \u003ccode\u003eDavid Ekete \u0026lt;https://github.com/davidekete\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: force lint, format, and test with pre-commit hooks\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.5 (2024-07-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efeature: check redirect to external URLs for invalid or non-existing addresses with standard linkcheck builder (\u003ccode\u003eissue [#3](https://github.com/documatt/sphinx-reredirects/issues/3) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/3\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eJean Abou Samra \u0026lt;https://github.com/jeanas\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003echore: requires Sphinx 7.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.4 (2024-06-21)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ccode\u003eEncodingWarning: 'encoding' argument not specified\u003c/code\u003e (\u003ccode\u003eissue [#5](https://github.com/documatt/sphinx-reredirects/issues/5) \u0026lt;https://github.com/documatt/sphinx-reredirects/issues/5\u0026gt;\u003c/code\u003e_ fixed by \u003ccode\u003eAnderson Bravalheri \u0026lt;https://github.com/abravalheri\u0026gt;\u003c/code\u003e_).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e0.1.3 (2023-11-03)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eNo new features, maintenance release. Contains only fixed URLs because \u003ccode\u003ethe project lives now GitHub \u0026lt;https://github.com/documatt/sphinx-reredirects/\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c73481d284833b755728b5b8ad75e37922d30a13\"\u003e\u003ccode\u003ec73481d\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/c699443dbe0bf309e6e2132af8c3269ebb8fd9d5\"\u003e\u003ccode\u003ec699443\u003c/code\u003e\u003c/a\u003e chore: support sphinx 9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/4644bc1f035e8cdbb211ec9fc784d8d086362129\"\u003e\u003ccode\u003e4644bc1\u003c/code\u003e\u003c/a\u003e feat: change GTM container\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/6f09582ed6de68bd3e2ba2b1099ef8ea7d79cc68\"\u003e\u003ccode\u003e6f09582\u003c/code\u003e\u003c/a\u003e fix: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/7c01dedb843b3b8ae256a5082d8967e622eb1960\"\u003e\u003ccode\u003e7c01ded\u003c/code\u003e\u003c/a\u003e ci: run tests on pull requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/47a6444c9b247fe8f911e4aa84965ebde33e33a1\"\u003e\u003ccode\u003e47a6444\u003c/code\u003e\u003c/a\u003e feat: support absolute path in target (\u003ca href=\"https://redirect.github.com/documatt/sphinx-reredirects/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/bc47062386d27c12dbf3d9baa8a011c2855c0628\"\u003e\u003ccode\u003ebc47062\u003c/code\u003e\u003c/a\u003e docs: theme from Git instead of .whl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/2a57e7ec09034b98ee56e6aa5e55cdb66a21424c\"\u003e\u003ccode\u003e2a57e7e\u003c/code\u003e\u003c/a\u003e fix: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/9f6918ddb33dff57f457ab0ddb61f1004670b5ca\"\u003e\u003ccode\u003e9f6918d\u003c/code\u003e\u003c/a\u003e feat: add Open Graph metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/documatt/sphinx-reredirects/commit/496390436ed32046052cca73e18bf4a5b9b20cea\"\u003e\u003ccode\u003e4963904\u003c/code\u003e\u003c/a\u003e ci: fix URL to real PyPI\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/documatt/sphinx-reredirects/compare/v0.1.2...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.1.29 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.08.06\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/810\"\u003epradyunsg/furo#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/821\"\u003epradyunsg/furo#821\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.07.18...2024.08.06\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2024.07.18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix close tag on pencil icon by \u003ca href=\"https://github.com/kberzinch\"\u003e\u003ccode\u003e@​kberzinch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/807\"\u003epradyunsg/furo#807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/796\"\u003epradyunsg/furo#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/806\"\u003epradyunsg/furo#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the npm group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/809\"\u003epradyunsg/furo#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove a 'type: ignore' comment, for mypy by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/812\"\u003epradyunsg/furo#812\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.01.29...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `myst-parser` from 2.0.0 to 4.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/releases\"\u003emyst-parser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Minor fix for sphinx 8.2 compat by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/1013\"\u003eexecutablebooks/MyST-Parser#1013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧪 Add CI testing support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/955\"\u003eexecutablebooks/MyST-Parser#955\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter by \u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Fix typos discovered by codespell by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 remove redundant paragraph by \u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e by \u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/969\"\u003eexecutablebooks/MyST-Parser#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/975\"\u003eexecutablebooks/MyST-Parser#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Snoopy1866\"\u003e\u003ccode\u003e@​Snoopy1866\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/987\"\u003eexecutablebooks/MyST-Parser#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/goekce\"\u003e\u003ccode\u003e@​goekce\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/990\"\u003eexecutablebooks/MyST-Parser#990\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support python\u0026gt;=3.10, sphinx \u0026gt;=7,\u0026lt;9, docutils\u0026gt;=0.19,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/952\"\u003eexecutablebooks/MyST-Parser#952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve footnote def/ref warnings and translations by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/931\"\u003eexecutablebooks/MyST-Parser#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/meli-lewis\"\u003e\u003ccode\u003e@​meli-lewis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/940\"\u003eexecutablebooks/MyST-Parser#940\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 FIX empty value for final directive option by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/924\"\u003eexecutablebooks/MyST-Parser#924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 FIX: allow indented option block by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/925\"\u003eexecutablebooks/MyST-Parser#925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/848\"\u003eexecutablebooks/MyST-Parser#848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/pull/916\"\u003eexecutablebooks/MyST-Parser#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md\"\u003emyst-parser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.1 - 2025-02-12\u003c/h2\u003e\n\u003cp\u003e🔧 Minor fix for Sphinx 8.2 compatibility (in \u003ca href=\"gh-pr:1013\"\u003egh-pr:1013\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e4.0.0 - 2024-08-05\u003c/h2\u003e\n\u003cp\u003eThis release bumps the supported versions of:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython to \u003ccode\u003e3.10\u003c/code\u003e and greater\u003c/li\u003e\n\u003cli\u003eSphinx to \u003ccode\u003e\u0026gt;=7,\u0026lt;9\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocutils to \u003ccode\u003e\u0026gt;=0.19,\u0026lt;0.22\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, footnotes are now parsed similar to the corresponding reStructuredText, in that resolution (between definitions and references) and ordering is now deferred to transforms on the doctree (in \u003ca href=\"gh-pr:931\"\u003egh-pr:931\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis allows for the proper interaction with other docutils/sphinx transforms, including those that perform translations,\nand logging of warnings for duplicate/unreferenced footnote definitions and also for footnote references with no definitions.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/executablebooks/MyST-Parser/blob/master/#syntax/footnotes\"\u003efootnotes guide\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0\"\u003ev3.0.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.1 - 2024-04-28\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccount for the final directive option having an empty value, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:924\"\u003egh-pr:924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-allow indented directive option blocks, by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:925\"\u003egh-pr:925\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v3.0.0...v3.0.1\"\u003ev3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.0.0 - 2024-04-23\u003c/h2\u003e\n\u003ch3\u003eUpgraded dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.12 by \u003ca href=\"gh-user:hugovk\"\u003egh-user:hugovk\u003c/a\u003e in \u003ca href=\"gh-pr:848\"\u003egh-pr:848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update docutils requirement from \u0026gt;=0.16,\u0026lt;0.21 to \u0026gt;=0.18,\u0026lt;0.22 by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:916\"\u003egh-pr:916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Allow for use of the \u003ccode\u003eline-block\u003c/code\u003e directive by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:900\"\u003egh-pr:900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ Emits sphinx include-read event by \u003ca href=\"gh-user:sumezulike\"\u003egh-user:sumezulike\u003c/a\u003e in \u003ca href=\"gh-pr:887\"\u003egh-pr:887\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Nested parse attribution in \u003ccode\u003eattr_block\u003c/code\u003e by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:831\"\u003egh-pr:831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Directive option parsing by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u0026lt;gh-pr:796\u003c/li\u003e\n\u003cli\u003e👌 Improve directive parsing warnings by \u003ca href=\"gh-user:chrisjsewell\"\u003egh-user:chrisjsewell\u003c/a\u003e in \u003ca href=\"gh-pr:893\"\u003egh-pr:893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Allow for opening external links in new tabs (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/856\"\u003e#856\u003c/a\u003e) by \u003ca href=\"gh-user:marjus45\"\u003egh-user:marjus45\u003c/a\u003e in \u003ca href=\"gh-pr:857\"\u003egh-pr:857\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/8a44f5d35197b19aab2f1fe35b6f1dce4960bce5\"\u003e\u003ccode\u003e8a44f5d\u003c/code\u003e\u003c/a\u003e 🚀 Release v4.0.1 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1022\"\u003e#1022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/fbb7f1d9b33b39e48b4bbe4107174c32f4397698\"\u003e\u003ccode\u003efbb7f1d\u003c/code\u003e\u003c/a\u003e 🔧 Minor fix for sphinx 8.2 compat (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/04375589259c3e6e9d6cfb2d479be98fe3cb630a\"\u003e\u003ccode\u003e0437558\u003c/code\u003e\u003c/a\u003e 🔧 update pre-commit (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/1006\"\u003e#1006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/b58737f4a18045a0fc80bfc78539a688462cce62\"\u003e\u003ccode\u003eb58737f\u003c/code\u003e\u003c/a\u003e ⬆️ Update pre-commit requirement from ~=3.0 to ~=4.0 (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/f62025fc7d29fd37c3dc46d15a19a62fe6158a16\"\u003e\u003ccode\u003ef62025f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/14ea197b79466bf0ab2204a7cfa05e9cc9619051\"\u003e\u003ccode\u003e14ea197\u003c/code\u003e\u003c/a\u003e 📚 Minor typo in \u003ccode\u003ecross-referencing.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/bc3579430f9974770ddb428ad395457e10055097\"\u003e\u003ccode\u003ebc35794\u003c/code\u003e\u003c/a\u003e 📚 remove redundant paragraph (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/9fe724ebf1d02fd979632d82387f802c91e0d6f6\"\u003e\u003ccode\u003e9fe724e\u003c/code\u003e\u003c/a\u003e 🧪 Fix tests for latest sphinx (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/59b5386f92f54241d0036e0726e93b4086970e03\"\u003e\u003ccode\u003e59b5386\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/MyST-Parser/commit/6bcba98ef33edd43339ee2db7426466cab0053a1\"\u003e\u003ccode\u003e6bcba98\u003c/code\u003e\u003c/a\u003e 🔧 Fix type of MockIncludeDirective’s \u003ccode\u003eklass\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/executablebooks/MyST-Parser/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/MyST-Parser/compare/v2.0.0...v4.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alabaster` from 0.7.13 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/releases\"\u003ealabaster's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAlabaster 1.0.0\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.16\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.15\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAlabaster 0.7.14\u003c/h2\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://alabaster.readthedocs.io/en/latest/changelog.html\"\u003ehttps://alabaster.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-doc/alabaster/blob/master/docs/changelog.rst\"\u003ealabaster's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e1.0.0\u003c/code\u003e -- 2024-07-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 6.1 and earlier.\u003c/li\u003e\n\u003cli\u003eUse a new SVG image for the GitHub banner.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e217\u003c/code\u003e Use the new \u003cem\u003esearchfield\u003c/em\u003e component for the search box.\nPatch by Tim Hoffmann.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e104\u003c/code\u003e Allow translating strings in \u003ccode\u003erelations.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e125\u003c/code\u003e Do not underline linked images.\nPatch by Joshua Bronson.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e169\u003c/code\u003e Do not ignore the Pygments background colour.\nPatch by Matthias Geier.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e174\u003c/code\u003e Fix clipping caused by incorrect CSS breakpoints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.16\u003c/code\u003e -- 2024-01-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:bug:\u003ccode\u003e215\u003c/code\u003e Do not display \u003ccode\u003elogo_name\u003c/code\u003e if it is set to \u003ccode\u003eFalse\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.15\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e:feature:\u003ccode\u003e213\u003c/code\u003e Allow an arbitrary string in the \u003ccode\u003elogo_name\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003e:feature:\u003ccode\u003e114\u003c/code\u003e Improved sidebar CSS styles.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e178\u003c/code\u003e Deprecated \u003ccode\u003ecanonical_url\u003c/code\u003e in favor of \u003ccode\u003ehtml_baseurl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e200\u003c/code\u003e Removed duplicate \u003ccode\u003e\u0026lt;meta name=\u0026quot;viewport\u0026quot; ... /\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e188\u003c/code\u003e Removed underline from whitespace.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e164\u003c/code\u003e Removed \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e from \u003c!-- raw HTML omitted --\u003e elements.\u003c/li\u003e\n\u003cli\u003e:bug:\u003ccode\u003e161\u003c/code\u003e Replaced \u003ccode\u003e\u0026amp;copy;\u003c/code\u003e with unicode decimal code entity \u003ccode\u003e[#169](https://github.com/sphinx-doc/alabaster/issues/169);\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:git_tag:\u003ccode\u003e0.7.14\u003c/code\u003e -- 2024-01-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8 and earlier.\u003c/li\u003e\n\u003cli\u003eDropped support for Sphinx 3.3 and earlier.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e198\u003c/code\u003e Fix horizontal scrolling on mobile.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e206\u003c/code\u003e Properly support the \u003ccode\u003ehtml_support_sphinx\u003c/code\u003e config value.\u003c/li\u003e\n\u003cli\u003e:issue:\u003ccode\u003e211\u003c/code\u003e Fix the GitHub 'forkme' banner.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ealabaster_version_info\u003c/code\u003e to the HTML template context.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eAdopt the Ruff linter and formatter.\u003c/li\u003e\n\u003cli\u003eMigrate from CircleCI to GitHub Actions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/fba58a43980385019ceb593f88ab8821e17840c0\"\u003e\u003ccode\u003efba58a4\u003c/code\u003e\u003c/a\u003e Bump to 1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/7d5c3186f7935053d54a8d885baf8e245954a4cc\"\u003e\u003ccode\u003e7d5c318\u003c/code\u003e\u003c/a\u003e Update project maintainers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/d25c4bc7a050b5b6a5688a464277f08352b0faec\"\u003e\u003ccode\u003ed25c4bc\u003c/code\u003e\u003c/a\u003e List \u003ccode\u003ebasic.css\u003c/code\u003e in \u003ccode\u003etheme.conf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/97235d1212d0c6883c9634ab739f77e020a0bc49\"\u003e\u003ccode\u003e97235d1\u003c/code\u003e\u003c/a\u003e Fix incorrect breakpoints that cause clipping around 875px (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/5bb441162abe332d85c05ccaea1c25bce5ecf2fc\"\u003e\u003ccode\u003e5bb4411\u003c/code\u003e\u003c/a\u003e Remove explicit width for search field input (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/9fdb57cf92e0064f8204fe1f61a246adebcf8f0e\"\u003e\u003ccode\u003e9fdb57c\u003c/code\u003e\u003c/a\u003e Update references to \u003ccode\u003esearchbox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/a35a1df5fc7e4c9ea5133d2379971b0d90980b20\"\u003e\u003ccode\u003ea35a1df\u003c/code\u003e\u003c/a\u003e Don't ignore the Pygments background (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/17e55e5c6cde426065ea665c93bafe58fa489153\"\u003e\u003ccode\u003e17e55e5\u003c/code\u003e\u003c/a\u003e Fix for \u0026quot;Don't put an underline on linked images\u0026quot; (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/125\"\u003e#125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/73be8789c10a62f7aed0ea7740aad19c587e14e0\"\u003e\u003ccode\u003e73be878\u003c/code\u003e\u003c/a\u003e Allow translations for strings in \u003ccode\u003erelations.html\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/alabaster/commit/eb522b822c97dd1d7ba0ffd9d561ce140c202b71\"\u003e\u003ccode\u003eeb522b8\u003c/code\u003e\u003c/a\u003e Use searchfield instead of searchbox component in sidebar (\u003ca href=\"https://redirect.github.com/sphinx-doc/alabaster/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/alabaster/compare/0.7.13...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.14.0 to 2.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium. 🇧🇪\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old, and here's to another great year of internationalization and localization!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThe changelog below is auto-generated by GitHub.\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/b50a1d2186c20f3359f7e10853d2b2225a46ed40/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix deprecation warnings for \u003ccode\u003edatetime.utcnow()\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1119\"\u003epython-babel/babel#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnclose white spaces in references by \u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003estr.index\u003c/code\u003e with \u003ccode\u003estr.find\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1130\"\u003epython-babel/babel#1130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace more alternate characters in \u003ccode\u003eformat_skeleton\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1122\"\u003epython-babel/babel#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extracted lineno with nested calls by \u003ca href=\"https://github.com/dylankiss\"\u003e\u003ccode\u003e@​dylankiss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1126\"\u003epython-babel/babel#1126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;Deleted duplicate code in test\u0026quot; by \u003ca href=\"https://github.com/mattdiaz007\"\u003e\u003ccode\u003e@​mattdiaz007\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1138\"\u003epython-babel/babel#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix of list index out of range error in PoFileParser.add_message when translations is empty by \u003ca href=\"https://github.com/gabe-sherman\"\u003e\u003ccode\u003e@​gabe-sherman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1135\"\u003epython-babel/babel#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake seconds optional in \u003ccode\u003eparse_time\u003c/code\u003e time formats by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1141\"\u003epython-babel/babel#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003ewraptext\u003c/code\u003e deprecated; use \u003ccode\u003eTextWrapper\u003c/code\u003e directly in \u003ccode\u003ewrite_po\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1140\"\u003epython-babel/babel#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the way obsolete messages are stored by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1132\"\u003epython-babel/babel#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eOrderedDict\u003c/code\u003e with just \u003ccode\u003edict\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1149\"\u003epython-babel/babel#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse CLDR 46 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1145\"\u003epython-babel/babel#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use python 3.13 and Ubuntu 24.04 by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1153\"\u003epython-babel/babel#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust docs/conf.py to add compatibility with sphinx 8 by \u003ca href=\"https://github.com/hrnciar\"\u003e\u003ccode\u003e@​hrnciar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1155\"\u003epython-babel/babel#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow specifying an explicit format in parse_date/parse_time by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1131\"\u003epython-babel/babel#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003eread_mo\u003c/code\u003e logic regarding \u003ccode\u003ecatalog.charset\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1148\"\u003epython-babel/babel#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump CI/tool versions by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1160\"\u003epython-babel/babel#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_and_call_extract_file uses the first matching method and options, instead of the first matching method and last matching options by \u003ca href=\"https://github.com/jpmckinney\"\u003e\u003ccode\u003e@​jpmckinney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1121\"\u003epython-babel/babel#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent wrapping file locations containing white space by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1120\"\u003epython-babel/babel#1120\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tzdata as dev dependency and sync with tox.ini by \u003ca href=\"https://github.com/wandrew004\"\u003e\u003ccode\u003e@​wandrew004\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1159\"\u003epython-babel/babel#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport short and narrow formats for format_timedelta when using \u003ccode\u003eadd_direction\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1163\"\u003epython-babel/babel#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove handling for \u003ccode\u003elocale=None\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1164\"\u003epython-babel/babel#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epytest.raises(match=...)\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1166\"\u003epython-babel/babel#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip extra leading slashes in \u003ccode\u003e/etc/localtime\u003c/code\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1165\"\u003epython-babel/babel#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant assignment in \u003ccode\u003eCatalog.__setitem__\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1167\"\u003epython-babel/babel#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanups by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1170\"\u003epython-babel/babel#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall test cleanup by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1172\"\u003epython-babel/babel#1172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMessage.python_brace_format\u003c/code\u003e by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1169\"\u003epython-babel/babel#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003eLiteral\u003c/code\u003e from the typing module by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1175\"\u003epython-babel/babel#1175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrefer LC_MONETARY when formatting currencies by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1173\"\u003epython-babel/babel#1173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dates formatting \u003ccode\u003eY\u003c/code\u003e, \u003ccode\u003ew\u003c/code\u003e and \u003ccode\u003eW\u003c/code\u003e symbols for week-numbering by \u003ca href=\"https://github.com/jun66j5\"\u003e\u003ccode\u003e@​jun66j5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1179\"\u003epython-babel/babel#1179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage of the \u003ccode\u003epython_format\u003c/code\u003e checker by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1176\"\u003epython-babel/babel#1176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 2.17.0 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1182\"\u003epython-babel/babel#1182\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dunedan\"\u003e\u003ccode\u003e@​Dunedan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-babel/babel/pull/1105\"\u003epython-babel/babel#1105\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.17.0\u003c/h2\u003e\n\u003cp\u003eHappy 2025! This release is being made from FOSDEM 2025, in Brussels, Belgium.\u003c/p\u003e\n\u003cp\u003eThank you to all contributors, new and old,\nand here's to another great year of inter...\n\n_Description has been truncated_","html_url":"https://github.com/OpenCilk/opencilk-project/pull/386","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenCilk%2Fopencilk-project/issues/386","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/386/packages"}},{"old_version":"2.2.0","new_version":"3.0.1","update_type":"major","path":null,"pr_created_at":"2026-01-01T05:18:18.000Z","version_change":"2.2.0 → 3.0.1","issue":{"uuid":"3774146753","node_id":"PR_kwDOHOe-ZM67LNva","number":69,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-01T05:18:18.000Z","updated_at":"2026-01-01T05:22:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":16,"packages":[{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"beautifulsoup4","old_version":"4.13.3","new_version":"4.14.3"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals-py","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.6","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.3` | `4.14.3` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [roman-numerals-py](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.8.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.5...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.2 to 3.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.3\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.3/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/15?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/15?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/487\"\u003e#487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialization PEP 489 for the C extension. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/494\"\u003e#494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/485\"\u003e#485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/503\"\u003e#503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/505\"\u003e#505\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-27\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e instead of \u003ccode\u003eUserWarning\u003c/code\u003e.\n:issue:\u003ccode\u003e487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialisation (:pep:\u003ccode\u003e489\u003c/code\u003e) for the C extension.\n:issue:\u003ccode\u003e494\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. :issue:\u003ccode\u003e485\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. :issue:\u003ccode\u003e503\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. :issue:\u003ccode\u003e505\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/297fc8e356e6836a62087949245d09a28e9f1b13\"\u003e\u003ccode\u003e297fc8e\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/7e4e6ce249107c5f27fa6fe890e29da7a8dc8f0c\"\u003e\u003ccode\u003e7e4e6ce\u003c/code\u003e\u003c/a\u003e Free-threading: run with pytest-run-paralell (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/6100b9c0d466495a08d55b33cb172d7b5d8e9aa1\"\u003e\u003ccode\u003e6100b9c\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/506\"\u003e#506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/c9d5ecfc7eec6f611b19cdc8e1cde1aaa65cb8eb\"\u003e\u003ccode\u003ec9d5ecf\u003c/code\u003e\u003c/a\u003e enable riscv64 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/2f9b33753052e7c6df1464a7c900787d04ae9daf\"\u003e\u003ccode\u003e2f9b337\u003c/code\u003e\u003c/a\u003e tox for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/78d951a9549dee9fc901c55fc79a74a5f01e96fc\"\u003e\u003ccode\u003e78d951a\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bb6744e392e79611b110c5ba022238eb1b855cc2\"\u003e\u003ccode\u003ebb6744e\u003c/code\u003e\u003c/a\u003e add entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/65c4134ab16a3faccbcac2cba90da0db2b799542\"\u003e\u003ccode\u003e65c4134\u003c/code\u003e\u003c/a\u003e upgrade cibuildwheel, add \u003ccode\u003ecp314\u003c/code\u003e wheels and test on CPython 3.14 (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3a9bd88b84c9edba8b922bb12b84a59feed98788\"\u003e\u003ccode\u003e3a9bd88\u003c/code\u003e\u003c/a\u003e add cp314 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/aafe44d87bd7974bc82af8c4010dea9938441edf\"\u003e\u003ccode\u003eaafe44d\u003c/code\u003e\u003c/a\u003e remove slsa provenance (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 24.2 to 25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRe-add a test for Unicode file name parsing by \u003ca href=\"https://github.com/Siddhesh-Agarwal\"\u003e\u003ccode\u003e@​Siddhesh-Agarwal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/863\"\u003epypa/packaging#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade to ruff 0.9.1 by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/865\"\u003epypa/packaging#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for PEP 738 Android tags by \u003ca href=\"https://github.com/mhsmith\"\u003e\u003ccode\u003e@​mhsmith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/880\"\u003epypa/packaging#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(markers): support 'extras' and 'dependency_groups' markers by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/888\"\u003epypa/packaging#888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Siddhesh-Agarwal\"\u003e\u003ccode\u003e@​Siddhesh-Agarwal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/863\"\u003epypa/packaging#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mhsmith\"\u003e\u003ccode\u003e@​mhsmith\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/880\"\u003epypa/packaging#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/888\"\u003epypa/packaging#888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/24.2...25.0\"\u003ehttps://github.com/pypa/packaging/compare/24.2...25.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e25.0 - 2025-04-19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* PEP 751: Add support for ``extras`` and ``dependency_groups`` markers. (:issue:`885`)\n* PEP 738: Add support for Android platform tags. (:issue:`880`)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f58537628042c7f29780b9d33f31597e7fc9d664\"\u003e\u003ccode\u003ef585376\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/600ecea15b2388037b8dc94883504ca612947576\"\u003e\u003ccode\u003e600ecea\u003c/code\u003e\u003c/a\u003e Add changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3910129009b25dd1aa1fe32e644bc891188c56fe\"\u003e\u003ccode\u003e3910129\u003c/code\u003e\u003c/a\u003e support 'extras' and 'dependency_groups' markers (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/888\"\u003e#888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/8e49b4373731bffb110c9583e64ad802cb67c7ea\"\u003e\u003ccode\u003e8e49b43\u003c/code\u003e\u003c/a\u003e Add support for PEP 738 Android tags (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/e624d8edfaa28865de7b5a7da8bd59fd410e5331\"\u003e\u003ccode\u003ee624d8e\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/886\"\u003e#886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/71f38d872a6e88b28da9d1b270f8512475bc90d4\"\u003e\u003ccode\u003e71f38d8\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9b4922dd3c26c8522d716bec79d7e0ed408631c1\"\u003e\u003ccode\u003e9b4922d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/870\"\u003e#870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/8510bd9d3bab5571974202ec85f6ef7b0359bfaf\"\u003e\u003ccode\u003e8510bd9\u003c/code\u003e\u003c/a\u003e Upgrade to ruff 0.9.1 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/865\"\u003e#865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9375ec2eff48257967c97d331b9a76019e95bdb0\"\u003e\u003ccode\u003e9375ec2\u003c/code\u003e\u003c/a\u003e Re-add tests for Unicode file name parsing (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2256ed4ac261309a09daa04cc801abd7cff2e6f0\"\u003e\u003ccode\u003e2256ed4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/864\"\u003e#864\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/24.2...25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygments` from 2.19.1 to 2.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.19.2\u003c/h2\u003e\n\u003cp\u003e(released June 21st, 2025)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/cfca62e6e95136e48a255e8cbffb0bbe1d98456c\"\u003e\u003ccode\u003ecfca62e\u003c/code\u003e\u003c/a\u003e Prepare v2.19.2 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6688300df2ea289a6137c7ee9c78d0bb95683b5c\"\u003e\u003ccode\u003e6688300\u003c/code\u003e\u003c/a\u003e Disable pyodide (currently broken.)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/66997c3e302226a95c22cdaebf827444327920fa\"\u003e\u003ccode\u003e66997c3\u003c/code\u003e\u003c/a\u003e Update ruff version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/94dda77d69a6d6c47c33f06ce2425e7f306154a2\"\u003e\u003ccode\u003e94dda77\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/26634c856cefea620571123577d1f8cf09589ed8\"\u003e\u003ccode\u003e26634c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e from thavelick/fix_lua_runaway_regex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/b6a51ece09e31d3db2b732c8536a533b6de74768\"\u003e\u003ccode\u003eb6a51ec\u003c/code\u003e\u003c/a\u003e fix lua regex causing runaway backtracking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/edef94d66c2d70f05a86ac6098a69ab253b8d946\"\u003e\u003ccode\u003eedef94d\u003c/code\u003e\u003c/a\u003e Investigation for \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/fb6a00ef872e45a23212c214b8494ebedbd4709b\"\u003e\u003ccode\u003efb6a00e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2837\"\u003e#2837\u003c/a\u003e from dlazin/sql-cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bf7aa2368fe7e0f42d4543781f0b00b4565b3995\"\u003e\u003ccode\u003ebf7aa23\u003c/code\u003e\u003c/a\u003e Clean up sql.py\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.1...2.19.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typing-extensions` from 4.12.2 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/releases\"\u003etyping-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003cp\u003eNew features since 4.14.1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cp\u003eThis release adds several new features, including experimental support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e) and sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e), and support for changes in Python 3.14. In addition, Python 3.8 is no longer supported.\u003c/p\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanges included in 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/typing_extensions/blob/main/CHANGELOG.md\"\u003etyping-extensions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.15.0 (August 25, 2025)\u003c/h1\u003e\n\u003cp\u003eNo user-facing changes since 4.15.0rc1.\u003c/p\u003e\n\u003ch1\u003eRelease 4.15.0rc1 (August 18, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003e@typing_extensions.disjoint_base\u003c/code\u003e decorator, as specified\nin PEP 800. Patch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.type_repr\u003c/code\u003e, a backport of\n\u003ca href=\"https://docs.python.org/3.14/library/annotationlib.html#annotationlib.type_repr\"\u003e\u003ccode\u003eannotationlib.type_repr\u003c/code\u003e\u003c/a\u003e,\nintroduced in Python 3.14 (CPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/124551\"\u003e#124551\u003c/a\u003e,\noriginally by Jelle Zijlstra). Patch by Semyon Moroz.\u003c/li\u003e\n\u003cli\u003eFix behavior of type params in \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e. Backport of\nCPython PR \u003ca href=\"https://redirect.github.com/python/cpython/pull/137227\"\u003e#137227\u003c/a\u003e by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.1 (July 4, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix usage of \u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e nested inside other types\n(e.g., \u003ccode\u003etyping.Type[typing_extensions.TypedDict]\u003c/code\u003e). This is not allowed by the\ntype system but worked on older versions, so we maintain support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0 (June 2, 2025)\u003c/h1\u003e\n\u003cp\u003eChanges since 4.14.0rc1:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003e__or__\u003c/code\u003e and \u003ccode\u003e__ror__\u003c/code\u003e methods from \u003ccode\u003etyping_extensions.Sentinel\u003c/code\u003e\non Python versions \u0026lt;3.10. PEP 604 was introduced in Python 3.10, and\n\u003ccode\u003etyping_extensions\u003c/code\u003e does not generally attempt to backport PEP-604 methods\nto prior versions.\u003c/li\u003e\n\u003cli\u003eFurther update \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e with changes in Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.14.0rc1 (May 24, 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8 (including PyPy-3.8). Patch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDo not attempt to re-export names that have been removed from \u003ccode\u003etyping\u003c/code\u003e,\nanticipating the removal of \u003ccode\u003etyping.no_type_check_decorator\u003c/code\u003e in Python 3.15.\nPatch by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003etyping_extensions.Format\u003c/code\u003e, \u003ccode\u003etyping_extensions.evaluate_forward_ref\u003c/code\u003e, and\n\u003ccode\u003etyping_extensions.TypedDict\u003c/code\u003e to align\nwith changes in Python 3.14. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003cli\u003eFix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for inline typed dictionaries (\u003ca href=\"https://peps.python.org/pep-0764/\"\u003ePEP 764\u003c/a\u003e).\nPatch by \u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etyping_extensions.Reader\u003c/code\u003e and \u003ccode\u003etyping_extensions.Writer\u003c/code\u003e. Patch by\nSebastian Rittau.\u003c/li\u003e\n\u003cli\u003eAdd support for sentinels (\u003ca href=\"https://peps.python.org/pep-0661/\"\u003ePEP 661\u003c/a\u003e). Patch by\n\u003ca href=\"https://github.com/Viicos\"\u003eVictorien Plot\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/9d1637e264b5c1a6b7acee3e907015f89b20c2c9\"\u003e\u003ccode\u003e9d1637e\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/4bd67c5be5d9443c7d33c314d02a56ee125eb88d\"\u003e\u003ccode\u003e4bd67c5\u003c/code\u003e\u003c/a\u003e Coverage: exclude some noise (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/656\"\u003e#656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e589a26da73b075c5276bae40b86db1af0144f84\"\u003e\u003ccode\u003ee589a26\u003c/code\u003e\u003c/a\u003e Coverage: add detailed report to job summary (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/67d37fed1298e050f74d5acc95b2621bd37837ad\"\u003e\u003ccode\u003e67d37fe\u003c/code\u003e\u003c/a\u003e Coverage: Implement fail_under (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/654\"\u003e#654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/e9ae26f5286edee9262727755ecb9ad16e999192\"\u003e\u003ccode\u003ee9ae26f\u003c/code\u003e\u003c/a\u003e Don't delete previous coverage comment (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/ac80bb728a3006fc88ef7373b92f0c25cfcc7895\"\u003e\u003ccode\u003eac80bb7\u003c/code\u003e\u003c/a\u003e Add Coverage workflow (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/623\"\u003e#623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/abaaafd98c1cc7e5baf098ec287a3d22cb339670\"\u003e\u003ccode\u003eabaaafd\u003c/code\u003e\u003c/a\u003e Prepare release 4.15.0rc1 (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/98104053ea8d49bcdd247804e5fa9f73136acbd4\"\u003e\u003ccode\u003e9810405\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e@disjoint_base\u003c/code\u003e (PEP 800) (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/7ee9e05fd484d06899ce56e80f5e1aa4c760fc03\"\u003e\u003ccode\u003e7ee9e05\u003c/code\u003e\u003c/a\u003e Backport type_params fix from CPython (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/646\"\u003e#646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/typing_extensions/commit/1e8eb9c06ef51b3a1e1f05303a16feca13f5ed98\"\u003e\u003ccode\u003e1e8eb9c\u003c/code\u003e\u003c/a\u003e Do not refer to PEP 705 as being experimental (\u003ca href=\"https://redirect.github.com/python/typing_extensions/issues/648\"\u003e#648\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/typing_extensions/compare/4.12.2...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.3 to 4.14.3\n\nUpdates `certifi` from 2025.1.31 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2024.8.6 to 2025.12.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/releases\"\u003efuro's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the supported Sphinx version range\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.09.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epage.html: fix invalid HTML5 by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebase.html: fix trailing slash on void elements by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/895\"\u003epradyunsg/furo#895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e_scaffold.sass: remove old scrollbar selectors by \u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/892\"\u003epradyunsg/furo#892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Blender to \u0026quot;used by\u0026quot; section by \u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haampie\"\u003e\u003ccode\u003e@​haampie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/894\"\u003epradyunsg/furo#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/struffel\"\u003e\u003ccode\u003e@​struffel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/898\"\u003epradyunsg/furo#898\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\"\u003ehttps://github.com/pradyunsg/furo/compare/2025.07.19...2025.09.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2025.07.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value by \u003ca href=\"https://github.com/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/847\"\u003epradyunsg/furo#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/826\"\u003epradyunsg/furo#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/861\"\u003epradyunsg/furo#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/873\"\u003epradyunsg/furo#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rel=edit attribute to \u0026quot;Edit this page\u0026quot; link/icon by \u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/879\"\u003epradyunsg/furo#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix flickering header drop shadow by \u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake current page section detection resilient to sticky elements above header by \u003ca href=\"https://github.com/Eric-Arellano\"\u003e\u003ccode\u003e@​Eric-Arellano\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/664\"\u003epradyunsg/furo#664\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capjamesg\"\u003e\u003ccode\u003e@​capjamesg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/880\"\u003epradyunsg/furo#880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/holesch\"\u003e\u003ccode\u003e@​holesch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pradyunsg/furo/pull/884\"\u003epradyunsg/furo#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\"\u003ehttps://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pradyunsg/furo/blob/main/docs/changelog.md\"\u003efuro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2025.12.19 -- Harmonious Honeydew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 9.\u003c/li\u003e\n\u003cli\u003eDrop support for Sphinx 6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.09.25 -- Gleaming Green\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChange the dark mode code back to \u003ccode\u003enative\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2025.07.19 -- Frozen Flame\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Switch to accessible-pygments themes\u003c/li\u003e\n\u003cli\u003e✨ Prefetch the sidebar logos\u003c/li\u003e\n\u003cli\u003e✨ Fix flickering header drop shadow on Safari\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erel=edit\u003c/code\u003e attribute to \u0026quot;Edit this page\u0026quot; link/icon\u003c/li\u003e\n\u003cli\u003eBump NodeJS and npm dependency versions\u003c/li\u003e\n\u003cli\u003eBump Saas \u0026amp; Webpack major versions\u003c/li\u003e\n\u003cli\u003eImprove current page detection to be resilient to sticky elements above header\u003c/li\u003e\n\u003cli\u003eModernise Sass and use \u003ccode\u003e@use\u003c/code\u003e + \u003ccode\u003e@forward\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove top of code \u003ccode\u003eborder-radius\u003c/code\u003e with captions\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;debug printf\u0026quot; for headerTop value\u003c/li\u003e\n\u003cli\u003eUse distinct images for light and dark mode in the documentation\u003c/li\u003e\n\u003cli\u003eUse the modern Saas Modules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.08.06 -- Energetic Eminence\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Sphinx 8\u003c/li\u003e\n\u003cli\u003e✨ Add smoother transitions between breakpoints\u003c/li\u003e\n\u003cli\u003eIncrease specificity of table-wrapper selector\u003c/li\u003e\n\u003cli\u003eAvoid page breaks inside paragraphs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.07.18 -- Dull Denim\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove how icons are handled and aligned.\u003c/li\u003e\n\u003cli\u003eImprove scroll event handler.\u003c/li\u003e\n\u003cli\u003eHide the copybutton by default.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esource_view_link\u003c/code\u003e configuration handling.\u003c/li\u003e\n\u003cli\u003eFix close tag on pencil icon.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.05.06 -- Cheerful Cerulean\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add new custom icons for auto mode, reflecting the currently active theme.\u003c/li\u003e\n\u003cli\u003e✨ Add a view this page button.\u003c/li\u003e\n\u003cli\u003e✨ Add colours and highlighting to \u0026quot;version modified\u0026quot; API helpers.\u003c/li\u003e\n\u003cli\u003e✨ Add release information to various customisation knobs.\u003c/li\u003e\n\u003cli\u003eMake all icons bigger and use a thinner stroke with them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2024.04.27 -- Bold Burgundy\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a skip to content link.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/dd9e9f920494f24b9b8dd954ec9d07e0b9d12817\"\u003e\u003ccode\u003edd9e9f9\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d43f7e98577aa2db8580a83a4d4c3dcf54617de9\"\u003e\u003ccode\u003ed43f7e9\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d27cab5e448c44e366577a80bf99beee6fa941a5\"\u003e\u003ccode\u003ed27cab5\u003c/code\u003e\u003c/a\u003e Bump the supported Sphinx version range\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/12f288eb8c8c57dc751e208545b07f1584bb29a7\"\u003e\u003ccode\u003e12f288e\u003c/code\u003e\u003c/a\u003e Back to development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/7c5f8fac52926f4854141cb5bf374c1681aedbec\"\u003e\u003ccode\u003e7c5f8fa\u003c/code\u003e\u003c/a\u003e Prepare release: 2025.09.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/8bfdc54b2e8803450a2cb5dcab643a40b6934be2\"\u003e\u003ccode\u003e8bfdc54\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d92b62fee4cedd5b2ac1d267353d96541c9e0fb0\"\u003e\u003ccode\u003ed92b62f\u003c/code\u003e\u003c/a\u003e Switch the dark mode theme back to \u003ccode\u003enative\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/83c3446288014357bb8a7875bb81b664b7f15896\"\u003e\u003ccode\u003e83c3446\u003c/code\u003e\u003c/a\u003e Add Blender to \u0026quot;used by\u0026quot; section (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/426ea05d879ee7dfdf74ba7c8b089f73081abbfd\"\u003e\u003ccode\u003e426ea05\u003c/code\u003e\u003c/a\u003e Remove old scrollbar selectors (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pradyunsg/furo/commit/d22d31c4b196a29092ac606737b6e9a7ae99273a\"\u003e\u003ccode\u003ed22d31c\u003c/code\u003e\u003c/a\u003e Remove trailing slash on void elements (\u003ca href=\"https://redirect.github.com/pradyunsg/furo/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2024.08.06...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.11 (2025-10-12)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14, lowest supported version is Python 3.8.\u003c/li\u003e\n\u003cli\u003eVarious updates to packaging, including PEP 740 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ad949ee3052c2265c66e3df2dd8871a5832ba327\"\u003e\u003ccode\u003ead949ee\u003c/code\u003e\u003c/a\u003e Release v3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cae4ba779e0a543823894bd4136651c187944da8\"\u003e\u003ccode\u003ecae4ba7\u003c/code\u003e\u003c/a\u003e Second release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/8adb305165c77c4a45d1568a70ead75d2197692c\"\u003e\u003ccode\u003e8adb305\u003c/code\u003e\u003c/a\u003e Add space in RST link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/74cb2b652bb06133b0c4ab52cc98221be63162cf\"\u003e\u003ccode\u003e74cb2b6\u003c/code\u003e\u003c/a\u003e Release candidate for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05dab09fdde5bbf7d52f757c4dc62e0ba934cca8\"\u003e\u003ccode\u003e05dab09\u003c/code\u003e\u003c/a\u003e Format idna-data with ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/90eac78b737d26613776b490432fc6d926b15c55\"\u003e\u003ccode\u003e90eac78\u003c/code\u003e\u003c/a\u003e Apply ruff formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a31ce7ecc0b767e40abb5ce28744ac567b73f366\"\u003e\u003ccode\u003ea31ce7e\u003c/code\u003e\u003c/a\u003e Remove errant test vectors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/81f03334211c78c1832991ce70ebafb3cbfbb79c\"\u003e\u003ccode\u003e81f0333\u003c/code\u003e\u003c/a\u003e Omit vectors known to be broken in test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a0f32578c0cac28c7ffbb4c860c92eb2b9b579bd\"\u003e\u003ccode\u003ea0f3257\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into unicode-16-uts46-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/38d98860e6a1ab92fd35ab09ea4739feabf339a3\"\u003e\u003ccode\u003e38d9886\u003c/code\u003e\u003c/a\u003e Remove extra UTS46 test vector\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals-py` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 2.2.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/master/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.0.1 (2025-05-09)\u003c/h1\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003cstrong\u003einit\u003c/strong\u003e.py in 3.0.0 was incorrectly generated due to a missing\nbuild dependency and the list of algorithms was empty.  First reported by\nlaymonage.  Thanks to Dmitry Shachnev, Henry Schreiner and Adam Turner for\ndiagnosing and fixing.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/230\"\u003e#230\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/231\"\u003e#231\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd trove classifiers for Armenian and Yiddish which have now been registered\nwith PyPI.  Thanks to Henry Schreiner and Dmitry Shachnev.  (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/228\"\u003e#228\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate documented details of Python 2 support in old versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eSnowball 3.0.0 (2025-05-08)\u003c/h1\u003e\n\u003ch2\u003eAda\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid Ada code generated for Snowball \u003ccode\u003eloop\u003c/code\u003e (it was partly Pascal!)\nNone of the stemmers shipped in previous releases triggered this bug, but\nthe Turkish stemmer now does.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe Ada runtime was not tracking the current length of the string\nbut instead used the current limit value or some other substitute, which\nmanifested as various incorrect behaviours for code inside of \u003ccode\u003esetlimit\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esize\u003c/code\u003e was incorrectly returning the difference between the limit and the\nbackwards limit.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003elenof\u003c/code\u003e or \u003ccode\u003esizeof\u003c/code\u003e on a string variable generated Ada code that didn't\neven compile.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix incorrect preconditions on some methods in the runtime.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug in runtime code used by \u003ccode\u003eattach\u003c/code\u003e, \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string\nvariable assignment when a (sub)string was replaced with a larger string.\nThis bug was triggered by code in the Kraaij-Pohlmann Dutch stemmer\nimplementation (which was previously not enabled by default but is now the\nstandard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix invalid code generated for \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003e\u0026lt;-\u003c/code\u003e and string variable\nassignment.  This bug was triggered by code in the Kraaij-Pohlmann\nDutch stemmer implementation (which was previously not enabled by default\nbut is now the standard Dutch stemmer).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/e4b3efb449ccb994d39230eb6e8440d267471f4a\"\u003e\u003ccode\u003ee4b3efb\u003c/code\u003e\u003c/a\u003e Update for 3.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/bbd3319b7f46c8e82f6f96b2e7969bae7b4fba04\"\u003e\u003ccode\u003ebbd3319\u003c/code\u003e\u003c/a\u003e Protect empty languages dict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/298ff9fcc930fb6fae6bcc8c80eec74f8f73134c\"\u003e\u003ccode\u003e298ff9f\u003c/code\u003e\u003c/a\u003e Update details of Python 2 support in old versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/53fe098738ecb029e943804ad6cec442e54801a8\"\u003e\u003ccode\u003e53fe098\u003c/code\u003e\u003c/a\u003e python: Specify correct dependencies for \u003ccode\u003e$(python_output_dir)/__init__.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/00a22def0924d06bb96dcffd728ae875b61d6613\"\u003e\u003ccode\u003e00a22de\u003c/code\u003e\u003c/a\u003e Stop excluding classifiers for Armenian and Yiddish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/abd9adc758f5ba7f5db567d70a61e0929b69c3c1\"\u003e\u003ccode\u003eabd9adc\u003c/code\u003e\u003c/a\u003e Update for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/d23d3561f48a505236fd8a89748286a80050b03d\"\u003e\u003ccode\u003ed23d356\u003c/code\u003e\u003c/a\u003e Back out incomplete ESM support for 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/ff42274e2247c475d9f42993ef307228949d5507\"\u003e\u003ccode\u003eff42274\u003c/code\u003e\u003c/a\u003e Update draft NEWS entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/cd61f01a4e04c7a79b91a3cc2a42b6ffa144a99b\"\u003e\u003ccode\u003ecd61f01\u003c/code\u003e\u003c/a\u003e tamil: remove_tense_suffix signals if ending removed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/edfe5763ed779aa1622eecd599029ecfb3ddb7aa\"\u003e\u003ccode\u003eedfe576\u003c/code\u003e\u003c/a\u003e nepali: Reformat amongs to be clearer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v2.2.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `soupsieve` from 2.6 to 2.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/soupsieve/releases\"\u003esoupsieve's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Changes in tests to accommodate latest Python HTML parser changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Deploy with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:open\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add \u003ccode\u003e:muted\u003c/code\u003e pseudo selector.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Recognize the following pseudo selectors: \u003ccode\u003e:autofill\u003c/code\u003e, \u003ccode\u003e:buffering\u003c/code\u003e, \u003ccode\u003e:fullscreen\u003c/code\u003e, \u003ccode\u003e:picture-in-picture\u003c/code\u003e,\n\u003ccode\u003e:popover-open\u003c/code\u003e, \u003ccode\u003e:seeking\u003c/code\u003e, \u003ccode\u003e:stalled\u003c/code\u003e, and \u003ccode\u003e:volume-locked\u003c/code\u003e. These selectors, while recognized, will not match any\nelement as they require a live environment to check element states and browser states. This just prevents Soup Sieve\nfrom failing when any of these selectors are specified.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: A number of existing pseudo-classes are no longer noted as experimental.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Typing fixes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/f89979745e12e83dbb31dde910a0ad08e9c5c717\"\u003e\u003ccode\u003ef899797\u003c/code\u003e\u003c/a\u003e Adjust changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/1b964a850bb482cc183f3f70811b25487ba200ee\"\u003e\u003ccode\u003e1b964a8\u003c/code\u003e\u003c/a\u003e Switch to using Zensical for documents (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/046ce54956a0c30120038561e53b40994d29de2c\"\u003e\u003ccode\u003e046ce54\u003c/code\u003e\u003c/a\u003e Adjustments for changes in HTML parser (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/bf937788f0c3ff9bb2ffffacef7ad8832d8da16e\"\u003e\u003ccode\u003ebf93778\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop Python 3.8 (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/d82b33b72dd2e905dc441babdd68c98c846c1501\"\u003e\u003ccode\u003ed82b33b\u003c/code\u003e\u003c/a\u003e Spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/2fe1c55af2e2b1f033220a741113dba220bb84c9\"\u003e\u003ccode\u003e2fe1c55\u003c/code\u003e\u003c/a\u003e Use \u0026quot;Trusted Publisher\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/a616022df73ddc5ecb71092155be9baba876b52d\"\u003e\u003ccode\u003ea616022\u003c/code\u003e\u003c/a\u003e Link license in readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/6b22489422a9a7080adb2f465b1e0eaf7672603d\"\u003e\u003ccode\u003e6b22489\u003c/code\u003e\u003c/a\u003e Add new selectors and move some existing selectors out of experimental (\u003ca href=\"https://redirect.github.com/facelessuser/soupsieve/issues/280\"\u003e#280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/48be2ee7e99d786d22187990e0d9751a07f3e038\"\u003e\u003ccode\u003e48be2ee\u003c/code\u003e\u003c/a\u003e Branch specifiers on badge do not work\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/soupsieve/commit/fcb3aaf85d1842814abab3887a7d7c0860d85f77\"\u003e\u003ccode\u003efcb3aaf\u003c/code\u003e\u003c/a\u003e Actually update badge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/soupsieve/compare/2.6...2.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.3.0 to 2.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6.2\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/caiyunapp/cyeva/pull/69","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiyunapp%2Fcyeva/issues/69","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/69/packages"}}]}