{"id":2580,"name":"iniconfig","ecosystem":"pip","repository_url":"https://github.com/pytest-dev/iniconfig","issues_count":332,"created_at":"2025-06-06T15:02:07.020Z","updated_at":"2025-06-06T15:02:07.020Z","purl":"pkg:pypi/iniconfig","metadata":{"id":2767162,"name":"iniconfig","ecosystem":"pypi","description":"brain-dead simple config-ini parsing","homepage":"https://github.com/pytest-dev/iniconfig","licenses":"MIT License","normalized_licenses":["MIT"],"repository_url":"https://github.com/pytest-dev/iniconfig","keywords_array":[],"namespace":null,"versions_count":9,"first_release_published_at":"2010-10-12T17:42:07.000Z","latest_release_published_at":"2025-03-19T20:10:01.000Z","latest_release_number":"2.1.0","last_synced_at":"2025-06-05T00:16:41.660Z","created_at":"2022-04-10T11:18:50.660Z","updated_at":"2025-06-05T00:16:41.661Z","registry_url":"https://pypi.org/project/iniconfig/","install_command":"pip install iniconfig --index-url https://pypi.org/simple","documentation_url":"https://iniconfig.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 4 - Beta","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Topic :: Software Development :: Libraries","Topic :: Utilities"],"normalized_name":"iniconfig"},"repo_metadata":{"id":40302888,"uuid":"66012563","full_name":"pytest-dev/iniconfig","owner":"pytest-dev","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-19T20:10:59.000Z","size":108,"stargazers_count":56,"open_issues_count":3,"forks_count":29,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-31T09:34:41.908Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pytest-dev.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-08-18T16:20:15.000Z","updated_at":"2025-03-19T20:10:59.000Z","dependencies_parsed_at":"2025-05-31T00:21:56.945Z","dependency_job_id":"252a1500-01c3-4e91-9ae1-f6cb65d6ec52","html_url":"https://github.com/pytest-dev/iniconfig","commit_stats":{"total_commits":123,"total_committers":15,"mean_commits":8.2,"dds":0.4796747967479674,"last_synced_commit":"16793eaddac67de0b8d621ae4e42e05b927e8d67"},"previous_names":["ronnypfannschmidt/iniconfig"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytest-dev","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":257834989,"owners_count":22610426,"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":"pytest-dev","name":"pytest-dev","uuid":"8897583","kind":"organization","description":"","email":"pytest-dev@python.org","website":"https://pytest.org","location":"Everywhere","twitter":"pytestdotorg","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8897583?v=4","repositories_count":75,"last_synced_at":"2025-05-31T09:46:50.931Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/pytest-dev","funding_links":["https://github.com/sponsors/pytest-dev"],"total_stars":34624,"followers":616,"following":0,"created_at":"2022-11-02T16:22:53.846Z","updated_at":"2025-05-31T09:46:50.931Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytest-dev","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytest-dev/repositories"},"tags":[{"name":"v2.1.0","sha":"34793a6417e35e511d0c17ffdd8a02ade0f9568e","kind":"commit","published_at":"2025-03-19T17:28:27.000Z","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/v2.1.0","html_url":"https://github.com/pytest-dev/iniconfig/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"93f5930e668c0d1ddf4597e38dd0dea4e2665e7a","kind":"commit","published_at":"2023-01-07T11:04:39.000Z","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/v2.0.0","html_url":"https://github.com/pytest-dev/iniconfig/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v2.0.0/manifests"},{"name":"v1.1.1","sha":"4e20f6bcdef72a2ffef1f811a4540778da60733b","kind":"commit","published_at":"2020-10-14T10:18:01.000Z","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/v1.1.1","html_url":"https://github.com/pytest-dev/iniconfig/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"ac8e4ce14bdf8ad25fd4383d24a942ebc3935c5a","kind":"commit","published_at":"2020-10-14T08:23:34.000Z","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/v1.1.0","html_url":"https://github.com/pytest-dev/iniconfig/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"4f843961be171f50ed14794aa92f9a967a68e044","kind":"commit","published_at":"2020-07-31T08:56:02.000Z","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/v1.0.1","html_url":"https://github.com/pytest-dev/iniconfig/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"bfdff38cd421317e4eff01a53f73e283071a46db","kind":"commit","published_at":"2016-09-23T17:02:30.000Z","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/v1.0.0","html_url":"https://github.com/pytest-dev/iniconfig/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/v1.0.0/manifests"},{"name":"0.1","sha":"bf2b06b73e662593f0e2a36b431ec7195a2d5808","kind":"commit","published_at":"2010-10-12T15:31:25.000Z","download_url":"https://codeload.github.com/pytest-dev/iniconfig/tar.gz/0.1","html_url":"https://github.com/pytest-dev/iniconfig/releases/tag/0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Finiconfig/tags/0.1/manifests"}]},"repo_metadata_updated_at":"2025-06-04T00:37:05.710Z","dependent_packages_count":501,"downloads":177042097,"downloads_period":"last-month","dependent_repos_count":72636,"rankings":{"downloads":0.014673325911075978,"dependent_repos_count":0.01815824081495652,"dependent_packages_count":0.050256141245435225,"stargazers_count":11.362656752389459,"forks_count":9.107366559857082,"docker_downloads_count":0.03008031811770575,"average":3.4305318897226194},"purl":"pkg:pypi/iniconfig","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/iniconfig","docker_dependents_count":6549,"docker_downloads_count":2632683787,"usage_url":"https://repos.ecosyste.ms/usage/pypi/iniconfig","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/iniconfig/dependencies","status":null,"funding_links":["https://github.com/sponsors/pytest-dev"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/iniconfig/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/iniconfig/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/iniconfig/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/iniconfig/related_packages","maintainers":[{"uuid":"ronny","login":"ronny","name":null,"email":null,"url":null,"packages_count":57,"html_url":"https://pypi.org/user/ronny/","role":null,"created_at":"2022-11-25T09:21:48.760Z","updated_at":"2022-11-25T09:21:48.760Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ronny/packages"},{"uuid":"hpk","login":"hpk","name":null,"email":null,"url":null,"packages_count":51,"html_url":"https://pypi.org/user/hpk/","role":null,"created_at":"2022-11-25T09:21:48.725Z","updated_at":"2022-11-25T09:21:48.725Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/hpk/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":689698,"maintainers_count":292475,"namespaces_count":0,"keywords_count":228396,"github":"pypi","metadata":{"funded_packages_count":48936},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-04T05:22:32.052Z","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":171,"unique_repositories_count_past_30_days":6,"recent_issues":[{"uuid":"4528230982","node_id":"PR_kwDOSn3wsM7fnM-p","number":5,"state":"open","title":"Bump the minor-update group with 145 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-26T23:33:44.000Z","updated_at":"2026-05-26T23:33:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-update","update_count":145,"packages":[{"name":"regex","old_version":"2026.2.28","new_version":"2026.5.9","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"transformers","old_version":"5.5.3","new_version":"5.9.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.12.0","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"prometheus-client","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"lark","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"filelock","old_version":"3.16.1","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"opentelemetry-sdk","old_version":"1.35.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-api","old_version":"1.35.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"tblib","old_version":"3.1.0","new_version":"3.2.2","repository_url":"https://github.com/ionelmc/python-tblib"},{"name":"absl-py","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/abseil/abseil-py"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.6.2.post1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argcomplete","old_version":"3.5.1","new_version":"3.6.3","repository_url":"https://github.com/kislyuk/argcomplete"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"audioread","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/beetbox/audioread"},{"name":"azure-core","old_version":"1.38.2","new_version":"1.41.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.29.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"blobfile","old_version":"3.0.0","new_version":"3.2.0","repository_url":"https://github.com/blobfile/blobfile"},{"name":"bm25s","old_version":"0.2.13","new_version":"0.3.9","repository_url":"https://github.com/xhluca/bm25s"},{"name":"boto3","old_version":"1.35.57","new_version":"1.43.15","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.57","new_version":"1.43.15","repository_url":"https://github.com/boto/botocore"},{"name":"click","old_version":"8.1.7","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.10.6","new_version":"7.14.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cramjam","old_version":"2.9.0","new_version":"2.11.0","repository_url":"https://github.com/milesgranger/pyrus-cramjam"},{"name":"cuda-bindings","old_version":"13.0.3","new_version":"13.2.0","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-pathfinder","old_version":"1.3.3","new_version":"1.5.4","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-toolkit","old_version":"13.0.2","new_version":"13.2.1"},{"name":"datamodel-code-generator","old_version":"0.26.3","new_version":"0.58.0","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"dataproperty","old_version":"1.0.1","new_version":"1.1.1","repository_url":"https://github.com/thombashi/DataProperty"},{"name":"decorator","old_version":"5.1.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dill","old_version":"0.3.8","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"einx","old_version":"0.3.0","new_version":"0.4.3","repository_url":"https://github.com/fferflo/einx"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastsafetensors","old_version":"0.2.2","new_version":"0.3.2","repository_url":"https://github.com/foundation-model-stack/fastsafetensors"},{"name":"fonttools","old_version":"4.55.0","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"google-api-core","old_version":"2.24.2","new_version":"2.30.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth","old_version":"2.40.2","new_version":"2.53.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"google-cloud-core","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-storage","old_version":"3.4.0","new_version":"3.10.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"google-crc32c","old_version":"1.7.1","new_version":"1.8.0","repository_url":"https://github.com/googleapis/python-crc32c"},{"name":"google-resumable-media","old_version":"2.7.2","new_version":"2.9.0","repository_url":"https://github.com/googleapis/google-resumable-media-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.3","new_version":"3.5.1","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-reflection","old_version":"1.78.0","new_version":"1.80.0"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"harfile","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/schemathesis/harfile"},{"name":"hf-xet","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"hiredis","old_version":"3.0.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"huggingface-hub","old_version":"1.10.2","new_version":"1.16.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"humanize","old_version":"4.11.0","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.153.0","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"hypothesis-graphql","old_version":"0.11.1","new_version":"0.12.0","repository_url":"https://github.com/Stranger6667/hypothesis-graphql"},{"name":"idna","old_version":"3.10","new_version":"3.16","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/nucleic/kiwi"},{"name":"lazy-loader","old_version":"0.4","new_version":"0.5","repository_url":"https://github.com/scientific-python/lazy-loader"},{"name":"librosa","old_version":"0.10.2.post1","new_version":"0.11.0","repository_url":"https://github.com/librosa/librosa"},{"name":"matplotlib","old_version":"3.9.2","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.36.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"mteb","old_version":"2.8.3","new_version":"2.12.30","repository_url":"https://github.com/embeddings-benchmark/mteb"},{"name":"multidict","old_version":"6.1.0","new_version":"6.7.1","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":"networkx","old_version":"3.2.1","new_version":"3.4.2","repository_url":"https://github.com/networkx/networkx"},{"name":"nvidia-cublas","old_version":"13.1.0.3","new_version":"13.5.1.27"},{"name":"nvidia-cuda-cupti","old_version":"13.0.85","new_version":"13.3.35"},{"name":"nvidia-cuda-nvrtc","old_version":"13.0.88","new_version":"13.3.33"},{"name":"nvidia-cuda-runtime","old_version":"13.0.96","new_version":"13.3.29"},{"name":"nvidia-cudnn-cu13","old_version":"9.19.0.56","new_version":"9.22.0.52"},{"name":"nvidia-cufft","old_version":"12.0.0.61","new_version":"12.3.0.29"},{"name":"nvidia-cufile","old_version":"1.15.1.6","new_version":"1.18.0.66"},{"name":"nvidia-cusolver","old_version":"12.0.4.66","new_version":"12.2.2.18"},{"name":"nvidia-cusparse","old_version":"12.6.3.3","new_version":"12.8.1.7"},{"name":"nvidia-cusparselt-cu13","old_version":"0.8.0","new_version":"0.9.1"},{"name":"nvidia-nccl-cu13","old_version":"2.28.9","new_version":"2.30.4"},{"name":"nvidia-nvjitlink","old_version":"13.0.88","new_version":"13.3.33"},{"name":"nvidia-nvshmem-cu13","old_version":"3.4.5","new_version":"3.6.5"},{"name":"nvidia-nvtx","old_version":"13.0.85","new_version":"13.3.29"},{"name":"opentelemetry-exporter-prometheus","old_version":"0.56b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.35.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.56b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pathvalidate","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/thombashi/pathvalidate"},{"name":"peft","old_version":"0.18.1","new_version":"0.19.1","repository_url":"https://github.com/huggingface/peft"},{"name":"perceptron","old_version":"0.1.4","new_version":"0.3.5","repository_url":"https://github.com/perceptron-ai-inc/perceptron"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.9.6","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":"polars","old_version":"1.29.0","new_version":"1.41.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"pooch","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/fatiando/pooch"},{"name":"propcache","old_version":"0.2.0","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.28.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pycryptodomex","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.41.1","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-extra-types","old_version":"2.10.5","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pygments","old_version":"2.18.0","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.2.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pystemmer","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/pystemmer"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-subtests","old_version":"0.14.1","new_version":"0.15.0","repository_url":"https://github.com/pytest-dev/pytest-subtests"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"python-rapidjson","old_version":"1.20","new_version":"1.23","repository_url":"https://github.com/python-rapidjson/python-rapidjson"},{"name":"rapidfuzz","old_version":"3.12.1","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.35.1","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"responses","old_version":"0.25.3","new_version":"0.26.1","repository_url":"https://github.com/getsentry/responses"},{"name":"rpds-py","old_version":"0.20.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"s3transfer","old_version":"0.10.3","new_version":"0.17.1","repository_url":"https://github.com/boto/s3transfer"},{"name":"sacrebleu","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/mjpost/sacrebleu"},{"name":"scikit-learn","old_version":"1.5.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.13.1","new_version":"1.15.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"5.2.0","new_version":"5.5.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.6.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tabulate","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/astanin/python-tabulate"},{"name":"tensorizer","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/coreweave/tensorizer"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"triton","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/triton-lang/triton"},{"name":"tritonclient","old_version":"2.64.0","new_version":"2.68.0","repository_url":"https://github.com/triton-inference-server/client"},{"name":"typer","old_version":"0.15.2","new_version":"0.26.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.48.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"vector-quantize-pytorch","old_version":"1.21.2","new_version":"1.29.1","repository_url":"https://github.com/lucidrains/vector-quantizer-pytorch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.7.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.7.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yarl","old_version":"1.17.1","new_version":"1.24.2","repository_url":"https://github.com/aio-libs/yarl"},{"name":"tpu-inference","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/vllm-project/tpu-inference"},{"name":"conch-triton-kernels","old_version":"1.2.1","new_version":"1.3","repository_url":"https://github.com/stackav-oss/conch"},{"name":"helion","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/pytorch/helion"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-update group with 145 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.5.9` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| [transformers](https://github.com/huggingface/transformers) | `5.5.3` | `5.9.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.0` | `2.13.4` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.0` | `0.25.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` |\n| [lark](https://github.com/lark-parser/lark) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.16.1` | `3.29.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.42.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.42.1` |\n| [tblib](https://github.com/ionelmc/python-tblib) | `3.1.0` | `3.2.2` |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.4.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.4` |\n| [anyio](https://github.com/agronholm/anyio) | `4.6.2.post1` | `4.13.0` |\n| [argcomplete](https://github.com/kislyuk/argcomplete) | `3.5.1` | `3.6.3` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [audioread](https://github.com/beetbox/audioread) | `3.0.1` | `3.1.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.29.0` |\n| [blobfile](https://github.com/blobfile/blobfile) | `3.0.0` | `3.2.0` |\n| [bm25s](https://github.com/xhluca/bm25s) | `0.2.13` | `0.3.9` |\n| [boto3](https://github.com/boto/boto3) | `1.35.57` | `1.43.15` |\n| [botocore](https://github.com/boto/botocore) | `1.35.57` | `1.43.15` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.4.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.6` | `7.14.1` |\n| [cramjam](https://github.com/milesgranger/pyrus-cramjam) | `2.9.0` | `2.11.0` |\n| [cuda-bindings](https://github.com/NVIDIA/cuda-python) | `13.0.3` | `13.2.0` |\n| [cuda-pathfinder](https://github.com/NVIDIA/cuda-python) | `1.3.3` | `1.5.4` |\n| [cuda-toolkit](https://developer.nvidia.com/cuda-toolkit) | `13.0.2` | `13.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.26.3` | `0.58.0` |\n| [dataproperty](https://github.com/thombashi/DataProperty) | `1.0.1` | `1.1.1` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.3.1` |\n| [dill](https://github.com/uqfoundation/dill) | `0.3.8` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [einx](https://github.com/fferflo/einx) | `0.3.0` | `0.4.3` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastsafetensors](https://github.com/foundation-model-stack/fastsafetensors) | `0.2.2` | `0.3.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.55.0` | `4.63.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.5.0` | `1.8.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.24.2` | `2.30.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.2` | `2.53.0` |\n| [google-cloud-core](https://github.com/googleapis/google-cloud-python) | `2.4.3` | `2.6.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.4.0` | `3.10.1` |\n| [google-crc32c](https://github.com/googleapis/python-crc32c) | `1.7.1` | `1.8.0` |\n| [google-resumable-media](https://github.com/googleapis/google-resumable-media-python) | `2.7.2` | `2.9.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.3` | `3.5.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-reflection](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [harfile](https://github.com/schemathesis/harfile) | `0.3.0` | `0.4.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.4.3` | `1.5.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.0.0` | `3.3.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.10.2` | `1.16.4` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.11.0` | `4.15.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.153.0` |\n| [hypothesis-graphql](https://github.com/Stranger6667/hypothesis-graphql) | `0.11.1` | `0.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.16` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.5.0` |\n| [lazy-loader](https://github.com/scientific-python/lazy-loader) | `0.4` | `0.5` |\n| [librosa](https://github.com/librosa/librosa) | `0.10.2.post1` | `0.11.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.9.2` | `3.10.9` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.36.0` |\n| [mteb](https://github.com/embeddings-benchmark/mteb) | `2.8.3` | `2.12.30` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.1.0` | `6.7.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.2.1` | `3.4.2` |\n| [nvidia-cublas](https://developer.nvidia.com/cuda-zone) | `13.1.0.3` | `13.5.1.27` |\n| [nvidia-cuda-cupti](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.3.35` |\n| [nvidia-cuda-nvrtc](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.3.33` |\n| [nvidia-cuda-runtime](https://developer.nvidia.com/cuda-zone) | `13.0.96` | `13.3.29` |\n| [nvidia-cudnn-cu13](https://developer.nvidia.com/cuda-zone) | `9.19.0.56` | `9.22.0.52` |\n| [nvidia-cufft](https://developer.nvidia.com/cuda-zone) | `12.0.0.61` | `12.3.0.29` |\n| [nvidia-cufile](https://developer.nvidia.com/cuda-zone) | `1.15.1.6` | `1.18.0.66` |\n| [nvidia-cusolver](https://developer.nvidia.com/cuda-zone) | `12.0.4.66` | `12.2.2.18` |\n| [nvidia-cusparse](https://developer.nvidia.com/cuda-zone) | `12.6.3.3` | `12.8.1.7` |\n| [nvidia-cusparselt-cu13](https://developer.nvidia.com/cusparselt) | `0.8.0` | `0.9.1` |\n| [nvidia-nccl-cu13](https://developer.nvidia.com/cuda-zone) | `2.28.9` | `2.30.4` |\n| [nvidia-nvjitlink](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.3.33` |\n| [nvidia-nvshmem-cu13](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.6.5` |\n| [nvidia-nvtx](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.3.29` |\n| [opentelemetry-exporter-prometheus](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.63b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.63b1` |\n| [pathvalidate](https://github.com/thombashi/pathvalidate) | `3.2.1` | `3.3.1` |\n| [peft](https://github.com/huggingface/peft) | `0.18.1` | `0.19.1` |\n| [perceptron](https://github.com/perceptron-ai-inc/perceptron) | `0.1.4` | `0.3.5` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.9.6` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.29.0` | `1.41.0` |\n| [pooch](https://github.com/fatiando/pooch) | `1.8.2` | `1.9.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.2.0` | `0.5.2` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.28.0` |\n| [pycryptodomex](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.1` | `2.47.0` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.10.5` | `2.11.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.13.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.0` | `3.3.2` |\n| [pystemmer](https://github.com/snowballstem/pystemmer) | `3.0.0` | `3.1.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [pytest-subtests](https://github.com/pytest-dev/pytest-subtests) | `0.14.1` | `0.15.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) | `1.20` | `1.23` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.12.1` | `3.14.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.37.0` |\n| [responses](https://github.com/getsentry/responses) | `0.25.3` | `0.26.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.1` | `0.30.0` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.3` | `0.17.1` |\n| [sacrebleu](https://github.com/mjpost/sacrebleu) | `2.4.3` | `2.6.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.13.1` | `1.15.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.0` | `5.5.1` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.6.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tabulate](https://github.com/astanin/python-tabulate) | `0.9.0` | `0.10.0` |\n| [tensorizer](https://github.com/coreweave/tensorizer) | `2.10.1` | `2.12.1` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.1` |\n| [triton](https://github.com/triton-lang/triton) | `3.6.0` | `3.7.0` |\n| [tritonclient](https://github.com/triton-inference-server/client) | `2.64.0` | `2.68.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.26.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.48.0` |\n| [vector-quantize-pytorch](https://github.com/lucidrains/vector-quantizer-pytorch) | `1.21.2` | `1.29.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.7.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.7.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.24.2` |\n| [tpu-inference](https://github.com/vllm-project/tpu-inference) | `0.19.0` | `0.20.0` |\n| [conch-triton-kernels](https://github.com/stackav-oss/conch) | `1.2.1` | `1.3` |\n| [helion](https://github.com/pytorch/helion) | `1.0.0` | `1.1.0` |\n\nUpdates `regex` from 2026.2.28 to 2026.5.9\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.5.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReverse matching with full unicode casefolding could lead to out-of-range string indexes.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eA fix for older Python versions before free-threading was  supported.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eMore fixes for free-threading.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\n\u003cp\u003eAdded prefixmatch as alias of match, like in re module.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.1.15\u003c/p\u003e\n\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/mrabarnett/mrab-regex/commit/e57d185bb711729091907b23edac5dcba0426243\"\u003e\u003ccode\u003ee57d185\u003c/code\u003e\u003c/a\u003e Reverse matching with full unicode casefolding lead to out-of-range string in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.5.9\"\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.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\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\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.3...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `transformers` from 5.5.3 to 5.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/transformers/releases\"\u003etransformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease v5.9.0\u003c/h1\u003e\n\u003ch2\u003eNew Model additions\u003c/h2\u003e\n\u003ch3\u003eCohere2Moe\u003c/h3\u003e\n\u003cp\u003eCommand A+ is a Mixture-of-Experts (MoE) language model from Cohere that features a hybrid attention pattern combining sliding window and full attention layers. The model incorporates both shared and routed experts and supports a very large context window for processing extensive text sequences.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/cohere2_moe\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new cohere2_moe model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46115\"\u003e#46115\u003c/a\u003e) by \u003ca href=\"https://github.com/Cyrilvallez\"\u003e\u003ccode\u003e@​Cyrilvallez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/46115\"\u003e#46115\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParakeet tdt (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44171\"\u003e#44171\u003c/a\u003e)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParakeet tdt (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44171\"\u003e#44171\u003c/a\u003e) by \u003ca href=\"https://github.com/lmaksym\"\u003e\u003ccode\u003e@​lmaksym\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHRM-Text\u003c/h3\u003e\n\u003cp\u003eHRM-Text is an improved autoregressive language-modeling variant of the Hierarchical Reasoning Model (HRM) that uses a hierarchical recurrent forward pass with two transformer stacks - one for slow, abstract planning (H) and one for fast, detailed computation (L) - reused inside a nested recurrence. It features PrefixLM attention where instruction tokens attend bidirectionally while response tokens attend causally, per-head sigmoid output gates, and parameterless RMSNorm. The model is designed as a base language model without instruction tuning or chat templates.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/hrm_text\"\u003eDocumentation\u003c/a\u003e | \u003ca href=\"https://huggingface.co/papers/2506.21734\"\u003ePaper\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd hrm text (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46025\"\u003e#46025\u003c/a\u003e) by \u003ca href=\"https://github.com/abcd1927\"\u003e\u003ccode\u003e@​abcd1927\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/46025\"\u003e#46025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBreaking changes\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003etext_embeds\u003c/code\u003e input for SAM3, EdgeTAM, and SAM3-Lite-Text models now expects full text embeddings instead of just pooler outputs, aligning with other models in the library — users must update their inputs accordingly.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e🚨Fix memory leaks caused by lru decorators in vision models (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45922\"\u003e#45922\u003c/a\u003e) by \u003ca href=\"https://github.com/yonigozlan\"\u003e\u003ccode\u003e@​yonigozlan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAudio\u003c/h2\u003e\n\u003cp\u003eAudio support was expanded with the addition of AudioFlamingoNext model checkpoints and improved compilability of audio/vision encoders via standalone pure functions. Additional improvements include better error messaging when loading audio from video files and new documentation for audio/video processors.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003euser friendly error when loading audio from video (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45221\"\u003e#45221\u003c/a\u003e) by \u003ca href=\"https://github.com/eustlb\"\u003e\u003ccode\u003e@​eustlb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45221\"\u003e#45221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[docs] adding audio/video processors (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45795\"\u003e#45795\u003c/a\u003e) by \u003ca href=\"https://github.com/stevhliu\"\u003e\u003ccode\u003e@​stevhliu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45795\"\u003e#45795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Audio Flamingo Next checkpoints (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44830\"\u003e#44830\u003c/a\u003e) by \u003ca href=\"https://github.com/lashahub\"\u003e\u003ccode\u003e@​lashahub\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44830\"\u003e#44830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract dynamic vision/audio tensors into standalone pure functions (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45396\"\u003e#45396\u003c/a\u003e) by \u003ca href=\"https://github.com/IlyasMoutawwakil\"\u003e\u003ccode\u003e@​IlyasMoutawwakil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45396\"\u003e#45396\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneration\u003c/h2\u003e\n\u003cp\u003eFixed generation issues including \u003ccode\u003einputs_embeds\u003c/code\u003e and \u003ccode\u003eper_layer_inputs\u003c/code\u003e handling for Gemma4, an \u003ccode\u003eAttributeError\u003c/code\u003e in RAG's \u003ccode\u003egenerate()\u003c/code\u003e caused by missing config fields, and flaky VLM generation tests by blocking special image tokens during sampling.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Gemma4 generation from inputs_embeds and per_layer_inputs (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46049\"\u003e#46049\u003c/a\u003e) by \u003ca href=\"https://github.com/Cyrilvallez\"\u003e\u003ccode\u003e@​Cyrilvallez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46049\"\u003e#46049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AttributeError in RAG generate() for missing config fields (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46035\"\u003e#46035\u003c/a\u003e) by \u003ca href=\"https://github.com/Sriniketh24\"\u003e\u003ccode\u003e@​Sriniketh24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46035\"\u003e#46035\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/huggingface/transformers/commit/0a2757da521a7a49b8143d9e0c938f08747d682e\"\u003e\u003ccode\u003e0a2757d\u003c/code\u003e\u003c/a\u003e release v5.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/e370a7f3f49c3c759cf8c7c01a935ce0e00c3f44\"\u003e\u003ccode\u003ee370a7f\u003c/code\u003e\u003c/a\u003e fix cohere2 tp_plan for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/f59ffd1ef95634f9b0317ec5d8d43d71e3604a10\"\u003e\u003ccode\u003ef59ffd1\u003c/code\u003e\u003c/a\u003e Add new cohere2_moe model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46115\"\u003e#46115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/4f41f261efcfd71ce08db2890b7c632cc9ffc0bc\"\u003e\u003ccode\u003e4f41f26\u003c/code\u003e\u003c/a\u003e [loading] Free up tensors faster inside ConversionOps (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46110\"\u003e#46110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/d5dd7eed2f7d5b2ccba569e150647ef275e56365\"\u003e\u003ccode\u003ed5dd7ee\u003c/code\u003e\u003c/a\u003e Fix post processing RF-DETR (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46041\"\u003e#46041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/0b25f8c49c37530ce9f8742d7a8c19ed8d254d7d\"\u003e\u003ccode\u003e0b25f8c\u003c/code\u003e\u003c/a\u003e [serve] Support for reasoning  (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45690\"\u003e#45690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/0df9b7fcaab447c75543598e6d959065c2296a24\"\u003e\u003ccode\u003e0df9b7f\u003c/code\u003e\u003c/a\u003e Fix Gemma4 generation from inputs_embeds and per_layer_inputs (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46049\"\u003e#46049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/38a8b55f22d593c103e8bcc616413e70a5ef03ca\"\u003e\u003ccode\u003e38a8b55\u003c/code\u003e\u003c/a\u003e Parakeet tdt (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44171\"\u003e#44171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/3428030a179620b01cb598928b6cc7d5e5e60990\"\u003e\u003ccode\u003e3428030\u003c/code\u003e\u003c/a\u003e Remove mask visualization tool from \u003ccode\u003emasking_utils.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46066\"\u003e#46066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/dda06506142a0efe4081a0ab574fbd3c7c72dc37\"\u003e\u003ccode\u003edda0650\u003c/code\u003e\u003c/a\u003e user friendly error when loading audio from video (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45221\"\u003e#45221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/transformers/compare/v5.5.3...v5.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.2 to 0.23.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.23.1\u003c/h2\u003e\n\u003ch2\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003etokenizers 0.23.1\u003c/code\u003e is the first proper stable release in the \u003ccode\u003e0.23\u003c/code\u003e line — \u003ccode\u003e0.23.0\u003c/code\u003e only ever shipped as \u003ccode\u003erc0\u003c/code\u003e because the release pipeline itself was broken (Node side hadn't shipped multi-platform binaries since 2023, Python side was on \u003ccode\u003epyo3 0.27\u003c/code\u003e without free-threaded support). \u003ccode\u003e0.23.1\u003c/code\u003e is the version where everything actually goes out the door together: full Node multi-platform wheels for the first time in years, Python 3.14 (regular \u003cstrong\u003eand\u003c/strong\u003e free-threaded \u003ccode\u003e3.14t\u003c/code\u003e), full type hints for every Python class, and a stack of measurable perf wins on the BPE / added-vocab hot paths.\u003c/p\u003e\n\u003cp\u003eThere is no functional \u003ccode\u003e0.23.0\u003c/code\u003e published — we tag \u003ccode\u003e0.23.1\u003c/code\u003e directly so users don't accidentally pull a never-shipped version.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🚨 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDrop Python 3.9\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1952\"\u003e#1952\u003c/a\u003e) — \u003ccode\u003erequires-python = \u0026quot;\u0026gt;=3.10\u0026quot;\u003c/code\u003e; 3.9 users stay on \u003ccode\u003e0.22.x\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eadd_tokens\u003c/code\u003e normalizes \u003ccode\u003econtent\u003c/code\u003e at insertion\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e) — re-saved \u003ccode\u003etokenizer.json\u003c/code\u003e may differ in the \u003ccode\u003eadded_tokens\u003c/code\u003e block. Existing files load unchanged.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eType stubs are precise\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1928\"\u003e#1928\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1997\"\u003e#1997\u003c/a\u003e) — methods that returned \u003ccode\u003eAny\u003c/code\u003e now return real types; \u003ccode\u003emypy --strict\u003c/code\u003e may surface previously-hidden errors. Stub layout also moved from \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;/__init__.pyi\u003c/code\u003e to \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;.pyi\u003c/code\u003e. This breaks the surface of some of the processors like \u003ccode\u003eRobertaProcessign\u003c/code\u003e's \u003ccode\u003e__init__\u003c/code\u003e .\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e3.14t-only\u003c/strong\u003e: setters/getters return \u003ccode\u003ePyResult\u0026lt;T\u0026gt;\u003c/code\u003e because of \u003ccode\u003eArc\u0026lt;RwLock\u0026lt;Tokenizer\u0026gt;\u0026gt;\u003c/code\u003e; a poisoned lock surfaces as \u003ccode\u003ePyException\u003c/code\u003e instead of a panic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e⚡ Performance — measured locally on this Mac, not lifted from PRs\u003c/h2\u003e\n\u003cp\u003eRun with \u003ccode\u003ecargo bench --bench \u0026lt;name\u0026gt; -- --save-baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.22.2\u003c/code\u003e, then \u003ccode\u003e--baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.23.1\u003c/code\u003e. Numbers are point-in-time wall clock on a single laptop; relative deltas are what matters, absolute numbers will differ on CI hardware.\u003c/p\u003e\n\u003ch3\u003eAdded-vocabulary deserialize — the headline win (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003ebench: improve added_vocab_deserialize to reflect real-world workloads\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2000\"\u003e#2000\u003c/a\u003e) is now representative of how transformers actually loads tokenizer.json files. The combined effect of \u003ccode\u003edaachorse\u003c/code\u003e for the matching automaton plus the normalize-on-insert refactor is enormous on this workload:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~410 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e248 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.1 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e273 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~395 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e235 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.4 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e290 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e400k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~15 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e980 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−94%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eReal-world impact: loading a Llama-3-style tokenizer with a large set of added tokens dropped from \u0026quot;noticeable pause\u0026quot; to \u0026quot;instant\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eBPE encode\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch, no cache\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e530 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e446 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−16%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch\u003c/code\u003e (cached)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e690 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e685 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode\u003c/code\u003e (single)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.95 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.94 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (small)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e32.6 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e31.5 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−3%\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (big)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.01 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e988 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−2%\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe BPE per-thread cache PR (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e) shows much larger wins on highly-parallel workloads (+47–62% at 88+ threads on a server box, per the PR's own measurements on Vera). Single-thread batch numbers above are flat or slightly improved because cache-hit overhead was already low without contention.\u003c/p\u003e\n\u003ch3\u003eLlama-3 encode\u003c/h3\u003e\n\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/huggingface/tokenizers/commit/7f1623b90b5adfb9bc327d4c3468d2f70bbce262\"\u003e\u003ccode\u003e7f1623b\u003c/code\u003e\u003c/a\u003e Bump version to 0.23.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bbe43ad73d8fc8932b9d0e657ddee3cd70c649a4\"\u003e\u003ccode\u003ebbe43ad\u003c/code\u003e\u003c/a\u003e ci: release workflow fixes (node + python) (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2043\"\u003e#2043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ab0c5d8fc13eb1c5001d9c06806635e2b5a42e9f\"\u003e\u003ccode\u003eab0c5d8\u003c/code\u003e\u003c/a\u003e Fix node release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2034\"\u003e#2034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/decd8e07dad15f296c0adc2bc3a560f62d3de2eb\"\u003e\u003ccode\u003edecd8e0\u003c/code\u003e\u003c/a\u003e bindings/python: free-threaded Python (3.14t) support (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2041\"\u003e#2041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/3992692d483bf3177219b52cb101b1bb055c18e6\"\u003e\u003ccode\u003e3992692\u003c/code\u003e\u003c/a\u003e update for release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2033\"\u003e#2033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bcdd25b97fcd78549903082ecf3ddd87d42c456b\"\u003e\u003ccode\u003ebcdd25b\u003c/code\u003e\u003c/a\u003e BPE cache: per-thread read-through cache to avoid RwLock atomics on hits (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/618eb383f43e207139eb5cdb9bca17796b5e9bd7\"\u003e\u003ccode\u003e618eb38\u003c/code\u003e\u003c/a\u003e Bump follow-redirects in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b6b1688bef2e87efc91af18edf7ac38b4d2dfbe6\"\u003e\u003ccode\u003eb6b1688\u003c/code\u003e\u003c/a\u003e chore: bump doc-builder SHA for PR upload workflow (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2025\"\u003e#2025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/19015d6b44aa3896626de5092e4171aed1b56d5b\"\u003e\u003ccode\u003e19015d6\u003c/code\u003e\u003c/a\u003e fix: use uvx --with cairosvg instead of uv pip install --system (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/efbcc68e321c364c8f9541f1c93a158df54d7da4\"\u003e\u003ccode\u003eefbcc68\u003c/code\u003e\u003c/a\u003e Ci benchmarks (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2019\"\u003e#2019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.2...v0.23.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.136.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.3\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (the default). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15589\"\u003e#15589\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.2\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Validate Server Sent Event fields to avoid applications from sending broken data. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15588\"\u003e#15588\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15464\"\u003e#15464\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update and simplify docs about help and management. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15583\"\u003e#15583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs references to central contributing docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15580\"\u003e#15580\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15577\"\u003e#15577\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🍱 Update sponsors: TalorData image. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15562\"\u003e#15562\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs, simplify usage of admonitions, only default ones. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15553\"\u003e#15553\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix image URLs in \u003ccode\u003eindex.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15534\"\u003e#15534\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix Azkaban spelling typo in \u003ccode\u003evirtual-environments.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15463\"\u003e#15463\u003c/a\u003e by \u003ca href=\"https://github.com/isaacbernat\"\u003e\u003ccode\u003e@​isaacbernat\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Improve layout and styling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15462\"\u003e#15462\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Refactor opinions section with interactive tabs and new logos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15458\"\u003e#15458\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add FastAPI Conf '26 announcement to docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15457\"\u003e#15457\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Improve translation consistency in \u003ccode\u003e‎docs/pt/docs/advanced/generate-clients.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15456\"\u003e#15456\u003c/a\u003e by \u003ca href=\"https://github.com/Will-thom\"\u003e\u003ccode\u003e@​Will-thom\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15530\"\u003e#15530\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15529\"\u003e#15529\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15528\"\u003e#15528\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15527\"\u003e#15527\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15526\"\u003e#15526\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15525\"\u003e#15525\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15524\"\u003e#15524\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15522\"\u003e#15522\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15523\"\u003e#15523\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15520\"\u003e#15520\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15521\"\u003e#15521\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Fix typos in Spanish LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15472\"\u003e#15472\u003c/a\u003e by \u003ca href=\"https://github.com/crr004\"\u003e\u003ccode\u003e@​crr004\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Update tests, don't double dispose the engine. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15587\"\u003e#15587\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⚡️ Speed up test suite via caching and fixture scopes to make it ~24% faster. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13583\"\u003e#13583\u003c/a\u003e by \u003ca href=\"https://github.com/dikos1337\"\u003e\u003ccode\u003e@​dikos1337\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15585\"\u003e#15585\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump urllib3 from 2.6.3 to 2.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15502\"\u003e#15502\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump idna from 3.11 to 3.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15565\"\u003e#15565\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.15.0 to 4.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15571\"\u003e#15571\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Migrate docs from MkDocs to Zensical. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15563\"\u003e#15563\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15548\"\u003e#15548\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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/fastapi/fastapi/commit/82064857539e6286522c347b4b11331b48dd2378\"\u003e\u003ccode\u003e8206485\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c910e0139f983d0e04e2d1d235cd71803afeae34\"\u003e\u003ccode\u003ec910e01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/063b5bf582d31fb155cc6bc6f88cf512329d0fd5\"\u003e\u003ccode\u003e063b5bf\u003c/code\u003e\u003c/a\u003e ♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/22b02e26f9e8c7e32bd8266e2b0ebe8bb3a0db2b\"\u003e\u003ccode\u003e22b02e2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b252a2a22ba27a8ab83d6bde7d9cddbc5bf738e\"\u003e\u003ccode\u003e3b252a2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7fb7851b3389f24c51701d705458989be53ccbb\"\u003e\u003ccode\u003ec7fb785\u003c/code\u003e\u003c/a\u003e ♻️ Validate Server Sent Event fields to avoid applications from sending broke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb83b83dcf78eab4ea17d504db5abcda705fbdc4\"\u003e\u003ccode\u003ecb83b83\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/00f805cec94c0bf48c1f9a563535a3ab2e6f90ab\"\u003e\u003ccode\u003e00f805c\u003c/code\u003e\u003c/a\u003e ✅ Update tests, don't double dispose the engine (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15587\"\u003e#15587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3675137523dc167981aa3a3c44599b4f3079ccd8\"\u003e\u003ccode\u003e3675137\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7b57e42986bb4d40c9eb6580537d13fb8e76097e\"\u003e\u003ccode\u003e7b57e42\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15464\"\u003e#15464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.136.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.0 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\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/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.0...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code...\n\n_Description has been truncated_","html_url":"https://github.com/kingcharlezz/deepseek-v4-flash-deterministic-vllm/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingcharlezz%2Fdeepseek-v4-flash-deterministic-vllm/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"},{"uuid":"4514318366","node_id":"PR_kwDOERpozs7e6EfY","number":1059,"state":"open","title":"Deps: Bump the python-packages group with 27 updates","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-25T04:41:50.000Z","updated_at":"2026-05-25T04:43:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Deps: Bump","group_name":"python-packages","update_count":27,"packages":[{"name":"django","old_version":"4.2.30","new_version":"5.2.14","repository_url":"https://github.com/django/django"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"weasyprint","old_version":"66.0","new_version":"68.1","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"pylint","old_version":"3.3.9","new_version":"4.0.5","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-django","old_version":"4.11.1","new_version":"4.12.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"pytest-env","old_version":"1.1.5","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pontos","old_version":"26.2.0","new_version":"26.5.0","repository_url":"https://github.com/greenbone/pontos"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"astroid","old_version":"3.3.11","new_version":"4.0.4","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"coverage","old_version":"7.10.7","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cssselect2","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"idna","old_version":"3.15","new_version":"3.16","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isort","old_version":"6.1.0","new_version":"8.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydyf","old_version":"0.11.0","new_version":"0.12.1","repository_url":"https://github.com/CourtBouillon/pydyf"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.13","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tinyhtml5","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/CourtBouillon/tinyhtml5"},{"name":"zopfli","old_version":"0.2.3.post1","new_version":"0.4.1","repository_url":"https://github.com/fonttools/py-zopfli"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 27 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `4.2.30` | `5.2.14` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `66.0` | `68.1` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.9` | `4.0.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.3` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.11.1` | `4.12.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.1.5` | `1.6.0` |\n| [pontos](https://github.com/greenbone/pontos) | `26.2.0` | `26.5.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [astroid](https://github.com/pylint-dev/astroid) | `3.3.11` | `4.0.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.14.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.8.0` | `0.9.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.63.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.16` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.1.0` | `8.0.1` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.6` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pydyf](https://github.com/CourtBouillon/pydyf) | `0.11.0` | `0.12.1` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.14` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tinyhtml5](https://github.com/CourtBouillon/tinyhtml5) | `2.0.0` | `2.1.0` |\n| [zopfli](https://github.com/fonttools/py-zopfli) | `0.2.3.post1` | `0.4.1` |\n\nUpdates `django` from 4.2.30 to 5.2.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/024c26b1e77ea5b1b158265167ade47927a64c06\"\u003e\u003ccode\u003e024c26b\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.14 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2115d4eaee15107f5cd290d7cfcc5ffe3ad43661\"\u003e\u003ccode\u003e2115d4e\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/47cf968c125e3fab317e10fe150ec479e745f995\"\u003e\u003ccode\u003e47cf968\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2ec27eda3ba6c14f0856e6e3eb1df07c41fd95e6\"\u003e\u003ccode\u003e2ec27ed\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ed18840c8cd1be81fdb3955cbfc9459989d6df68\"\u003e\u003ccode\u003eed18840\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/de3f622b7fa72aee68650f15263f2788b626680a\"\u003e\u003ccode\u003ede3f622\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fb61c8a6e902abc885048a1a78592a4bd4329f87\"\u003e\u003ccode\u003efb61c8a\u003c/code\u003e\u003c/a\u003e [5.2.x] Refs CVE-2026-4292 -- Isolated new test in AdminViewListEditable.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/bd1a7583061a96059ea560eb7b59bebce4240778\"\u003e\u003ccode\u003ebd1a758\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed two issues in release helper scripts/verify_release.sh.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/da57aaad76e674fdb01b741974acf229d3ac4132\"\u003e\u003ccode\u003eda57aaa\u003c/code\u003e\u003c/a\u003e [5.2.x] Added CVE-2026-3902, CVE-2026-4277, CVE-2026-4292, CVE-2026-33033, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9a8bdbc4839a442b1a0453bd8ed38def4776139\"\u003e\u003ccode\u003ec9a8bdb\u003c/code\u003e\u003c/a\u003e [5.2.x] Post-release version bump.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/4.2.30...5.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9928\"\u003eencode/django-rest-framework#9928\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\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/encode/django-rest-framework/commit/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `weasyprint` from 66.0 to 68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/WeasyPrint/releases\"\u003eweasyprint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev68.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2662\"\u003e#2662\u003c/a\u003e: Don’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2665\"\u003e#2665\u003c/a\u003e: Fix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2663\"\u003e#2663\u003c/a\u003e: Fix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2666\"\u003e#2666\u003c/a\u003e: Don’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2670\"\u003e#2670\u003c/a\u003e: Fix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2671\"\u003e#2671\u003c/a\u003e: Improve API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2672\"\u003e#2672\u003c/a\u003e: Fix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2675\"\u003e#2675\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2673\"\u003e#2673\u003c/a\u003e: Fix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBackers and sponsors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\u003c/li\u003e\n\u003cli\u003eProthesis Dental Solutions\u003c/li\u003e\n\u003cli\u003eKai DeLorenzo\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev68.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThis is a security update (CVE-2025-68616).\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWe strongly recommend to upgrade WeasyPrint to the latest version if you use the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function in your custom URL fetcher, or if you use the \u003ccode\u003eallowed_protocols\u003c/code\u003e parameter of the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function.\u003c/p\u003e\n\u003cp\u003eRead about this release \u003ca href=\"https://www.courtbouillon.org/blog/00061-weasyprint-68/\"\u003eon our blog\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eSecurity\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/WeasyPrint/blob/main/docs/changelog.rst\"\u003eweasyprint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 68.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-06.\u003c/p\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#2662](https://github.com/Kozea/WeasyPrint/issues/2662) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2662\u0026gt;\u003c/code\u003e_:\nDon’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2665](https://github.com/Kozea/WeasyPrint/issues/2665) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2665\u0026gt;\u003c/code\u003e_:\nFix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2663](https://github.com/Kozea/WeasyPrint/issues/2663) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2663\u0026gt;\u003c/code\u003e_:\nFix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2666](https://github.com/Kozea/WeasyPrint/issues/2666) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2666\u0026gt;\u003c/code\u003e_:\nDon’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2670](https://github.com/Kozea/WeasyPrint/issues/2670) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2670\u0026gt;\u003c/code\u003e_:\nFix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2671](https://github.com/Kozea/WeasyPrint/issues/2671) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2671\u0026gt;\u003c/code\u003e_:\nImprove API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2672](https://github.com/Kozea/WeasyPrint/issues/2672) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2672\u0026gt;\u003c/code\u003e_:\nFix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2675](https://github.com/Kozea/WeasyPrint/issues/2675) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2675\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#2673](https://github.com/Kozea/WeasyPrint/issues/2673) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2673\u0026gt;\u003c/code\u003e\u003c/em\u003e:\nFix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eContributors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackers and sponsors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\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/Kozea/WeasyPrint/commit/88d466df43b205c6abbc385e2832cbe6c77aeddc\"\u003e\u003ccode\u003e88d466d\u003c/code\u003e\u003c/a\u003e Version 68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/d5dab6e9f173826208082f24546977927d9c3c0c\"\u003e\u003ccode\u003ed5dab6e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2675\"\u003e#2675\u003c/a\u003e from Kozea/fix-calc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/e752cb3fde54d13cdc5eb4a7fdb80fd172a3c28b\"\u003e\u003ccode\u003ee752cb3\u003c/code\u003e\u003c/a\u003e Allow calc for more properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/66928cec7a2b000c706b5699518adbcedeff6e71\"\u003e\u003ccode\u003e66928ce\u003c/code\u003e\u003c/a\u003e Allow calc for preferred content width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/c155e217b8ff1624f536113ab54622effece3ad8\"\u003e\u003ccode\u003ec155e21\u003c/code\u003e\u003c/a\u003e Allow calc for text-underline-offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/9f5ca24e816a250b3c35cc5dda4b871cbc8d829a\"\u003e\u003ccode\u003e9f5ca24\u003c/code\u003e\u003c/a\u003e Allow calc for text-decoration-thickness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/b2acd6d5eb7fc00920a883169b62ad13394e1f38\"\u003e\u003ccode\u003eb2acd6d\u003c/code\u003e\u003c/a\u003e Allow calc for hyphenate-limit-zone\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/321bcf696acb710115a467d04fc0b5f640faf627\"\u003e\u003ccode\u003e321bcf6\u003c/code\u003e\u003c/a\u003e Simplify, test and fix wrong calc() values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/38d3f53154a2c3c3d7b29dd11e01ed21f61fc2ab\"\u003e\u003ccode\u003e38d3f53\u003c/code\u003e\u003c/a\u003e Fix and test calc() function for table width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/4dfd05f13dfeadf36d44e8f72ee3f2df0b4c6945\"\u003e\u003ccode\u003e4dfd05f\u003c/code\u003e\u003c/a\u003e Don’t iterate over all lines when trying to report footnotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/WeasyPrint/compare/v66.0...v68.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pylint` from 3.3.9 to 4.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/88e1ab7545a4af4aea15c305a154c164a95ab842\"\u003e\u003ccode\u003e88e1ab7\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.5, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10860\"\u003e#10860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/d96d489a1743d32b6bfa53fc0f69a4333209a146\"\u003e\u003ccode\u003ed96d489\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Relax isort version constraint to allow isort 8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/0b08ccb014c265700f244a885bdcbdfa3a03de46\"\u003e\u003ccode\u003e0b08ccb\u003c/code\u003e\u003c/a\u003e Fix dynamic color mapping for \u0026quot;fail-on\u0026quot; messages when using multiple reporter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/154dba43276e8232a2e1cb8f90bfcc63886f3460\"\u003e\u003ccode\u003e154dba4\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix FP for \u003ccode\u003einvalid-name\u003c/code\u003e with \u003ccode\u003etyping.Final\u003c/code\u003e on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7b73bfdedf275935b9c5b43a6aeda5cc648b4847\"\u003e\u003ccode\u003e7b73bfd\u003c/code\u003e\u003c/a\u003e Disable unspecified-encoding for py-version above Python 3.15 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10800\"\u003e#10800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/4cc98be8b7786dbc6692493fe9cedb8585af5518\"\u003e\u003ccode\u003e4cc98be\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix setting options for import order checker (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f0d30a27b510d69f846e3aaa0054cf0a1412923c\"\u003e\u003ccode\u003ef0d30a2\u003c/code\u003e\u003c/a\u003e Sync astroid version with requirements file again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/38bdf024648724e6aea017e62d3b57cb44097ec3\"\u003e\u003ccode\u003e38bdf02\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix \u003ccode\u003elogging-unsupported-format\u003c/code\u003e when logging ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f08c33ae3e691eed868e49c0d15270dc6e6a0d6c\"\u003e\u003ccode\u003ef08c33a\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Properly detect \u003ccode\u003eself.fail()\u003c/code\u003e as a terminating...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/e16f942166511d6fb4427e503a734152fae0c4fe\"\u003e\u003ccode\u003ee16f942\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v3.3.9...v4.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.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\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\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/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\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/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/8.4.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 `pytest-django` from 4.11.1 to 4.12.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-django/blob/main/docs/changelog.rst\"\u003epytest-django's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.12.0 (2026-02-14)\u003c/h2\u003e\n\u003cp\u003eCompatibility\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficial Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9, minimum version is now Python 3.10.\u003c/li\u003e\n\u003cli\u003eOfficial Django 6.0 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements\n^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe :ref:\u003ccode\u003emultiple databases \u0026lt;multi-db\u0026gt;\u003c/code\u003e support added in v4.3.0 is no longer considered experimental.\u003c/li\u003e\n\u003cli\u003eAdded :func:\u003ccode\u003e@pytest.mark.django_isolate_apps \u0026lt;pytest.mark.django_isolate_apps\u0026gt;\u003c/code\u003e\nfor isolating Django's app registry in pytest tests, and a\n:fixture:\u003ccode\u003edjango_isolated_apps\u003c/code\u003e fixture to access the isolated Apps registry instance if needed.\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-django/commit/a2a94956cc24bb30030510710f0f27e61efb0cf0\"\u003e\u003ccode\u003ea2a9495\u003c/code\u003e\u003c/a\u003e Release 4.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/020bc237ac7be78ab3a2780d07637f77166a6263\"\u003e\u003ccode\u003e020bc23\u003c/code\u003e\u003c/a\u003e tests: make sure access to default can also be blocked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/bcefbe832468f764b0f2665548aae8a9f75820a7\"\u003e\u003ccode\u003ebcefbe8\u003c/code\u003e\u003c/a\u003e Add support for isolating apps in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/39c8dcc249d5c103d29d170a5ad63a2fe7067049\"\u003e\u003ccode\u003e39c8dcc\u003c/code\u003e\u003c/a\u003e plugin: add a note why we reorder tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1830acd6193ad6d851131c9ed805c003c10ce27a\"\u003e\u003ccode\u003e1830acd\u003c/code\u003e\u003c/a\u003e pyproject.toml: require pytest 9 for self tests, switch to native toml config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/f19da084b9b8b131c5ae178f1a8a907ec6e3567b\"\u003e\u003ccode\u003ef19da08\u003c/code\u003e\u003c/a\u003e Fix the order of the test cases that use the live_server fixture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/92858eed573ce1786d0f67d242426c7f8f75dd7b\"\u003e\u003ccode\u003e92858ee\u003c/code\u003e\u003c/a\u003e docs: add pytest 9.0+ native TOML configuration format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/3f550d93947acda430c27be578b7619c25abddc8\"\u003e\u003ccode\u003e3f550d9\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1f50dd29b8778e645ca7a88a285b30a9c788afc4\"\u003e\u003ccode\u003e1f50dd2\u003c/code\u003e\u003c/a\u003e Drop obsolete traces of Django 5.0 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/247ec1c365da3d25f230dde22b7a0e1805749d09\"\u003e\u003ccode\u003e247ec1c\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePytestCollectionWarning\u003c/code\u003e for \u003ccode\u003eTestRunner\u003c/code\u003e class (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-django/issues/1259\"\u003e#1259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-django/compare/v4.11.1...v4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.1.5 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.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(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.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(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.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(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.5...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pontos` from 26.2.0 to 26.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/greenbone/pontos/releases\"\u003epontos's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epontos 26.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.3..26.5.0\"\u003e26.5.0\u003c/a\u003e - 2026-05-19\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump urllib3 from 2.6.3 to 2.7.0 by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1217\"\u003e#1217\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.2..26.4.3\"\u003e26.4.3\u003c/a\u003e - 2026-04-29\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCVE Change event name \u0026quot;Data Remediation\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1214\"\u003e#1214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.1..26.4.2\"\u003e26.4.2\u003c/a\u003e - 2026-04-27\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTwo test cases for XML files by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1211\"\u003e#1211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove XML declarations from templates by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/9e2d78c64bcd5ffc4fb793d3770bdb409cf56b1e\"\u003e9e2d78c\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:bug: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent duplication and adding of XML declarations by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/ee996b5771ddb3e0183b00ad34ffda45988d6dbc\"\u003eee996b5\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:wrench: Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse git-cliff for release changelog generation by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/af9e7f10db1b8cab9912e0c0827380feab952194\"\u003eaf9e7f1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the conventional commits workflow by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1210\"\u003e#1210\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 8 updates by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1209\"\u003e#1209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.1\u003c/h2\u003e\n\u003ch2\u003e[26.4.1] - 2026-04-21\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/greenbone/pontos/commit/a380de64b4e171a476b1cf3172319ee180ed818f\"\u003e\u003ccode\u003ea380de6\u003c/code\u003e\u003c/a\u003e Automatic release to 26.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/12b9dd283e3d261098719ac8ce94625f73e98684\"\u003e\u003ccode\u003e12b9dd2\u003c/code\u003e\u003c/a\u003e Change: Rename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/fd0a178d18da0d3ead9de7c1d9933364d6cfafac\"\u003e\u003ccode\u003efd0a178\u003c/code\u003e\u003c/a\u003e Deps: Bump urllib3 from 2.6.3 to 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/00adf5473d50e7aa0e0839984a8ba44447e28c0d\"\u003e\u003ccode\u003e00adf54\u003c/code\u003e\u003c/a\u003e Update: Greenbone license header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a793376e247ac9a8e0994d1ba56cd2e44bbaf575\"\u003e\u003ccode\u003ea793376\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/7e3dffb21ddab71884678eac10215767319d29f4\"\u003e\u003ccode\u003e7e3dffb\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/f2f04018b6e2eabb1b64123445dadbcfdb85d112\"\u003e\u003ccode\u003ef2f0401\u003c/code\u003e\u003c/a\u003e Add: CVE Change event name \u0026quot;Data Remediation\u0026quot; (\u003ca href=\"https://redirect.github.com/greenbone/pontos/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a81ba0338193a9e889da80825487a86be7179ee2\"\u003e\u003ccode\u003ea81ba03\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/46c3185d68b38c4889db97a0e89fd2622728c341\"\u003e\u003ccode\u003e46c3185\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/31d04650f4750791cbfdfbc3afa267693e709051\"\u003e\u003ccode\u003e31d0465\u003c/code\u003e\u003c/a\u003e Use snake_case for release-version output variables\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/greenbone/pontos/compare/v26.2.0...v26.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\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/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `astroid` from 3.3.11 to 4.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/astroid/releases\"\u003eastroid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.4\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.3\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.2\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/astroid/blob/main/ChangeLog\"\u003eastroid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.0?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-05\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/pylint-dev/astroid/commit/019feb6018eef32a0e3a25d8153427a537961882\"\u003e\u003ccode\u003e019feb6\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b25ee05e15b70693a4d740ac563568e0b618ec0d\"\u003e\u003ccode\u003eb25ee05\u003c/code\u003e\u003c/a\u003e Fix namespace detection crash (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2949\"\u003e#2949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b978037e67f233f4366de4ccbcdad2c627474477\"\u003e\u003ccode\u003eb978037\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.3, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/5476bc3dad1fe83bd4725ae284229a51326bd97c\"\u003e\u003ccode\u003e5476bc3\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Wrong inference with default argument values (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/ae761dca40d1aa1b7e7b941e535a819acd83f9a5\"\u003e\u003ccode\u003eae761dc\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix base class inference for dataclasses with PE...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/077c51fa1eb737a13d6888873dc432cf8cbbe9e0\"\u003e\u003ccode\u003e077c51f\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [typing] Add sys check guard for typing.Self for...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/f3255d1611277ecc3d6f338d551ce8437f66ae72\"\u003e\u003ccode\u003ef3255d1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Skip mypy install for pypy (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/d2823f2cb764b3d63c91998f6cd392629147c095\"\u003e\u003ccode\u003ed2823f2\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [ci] Fix windows cache key (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/05c79e1e57da03875a8fd8a30715688f179585da\"\u003e\u003ccode\u003e05c79e1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Improve self argument typing (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2904\"\u003e#2904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/a068430290b375a06f6eccdcea7d5026995172ba\"\u003e\u003ccode\u003ea068430\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.2, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/astroid/compare/v3.3.11...v4.0.4\"\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 `coverage` from 7.10.7 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\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/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.10.7...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cssselect2` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/cssselect2/releases\"\u003ecssselect2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\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/Kozea/cssselect2/blob/main/docs/changelog.rst\"\u003ecssselect2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eVersion 0.9.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.8.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2025-03-05.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.8 and 3.9, support 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eHandle case-sensitive and case-insensitive attribute selectors\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.7.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-09-19.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport :has selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.6.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-04-15.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis version deprecates the \u003ccode\u003eiter_ancestors\u003c/code\u003e and \u003ccode\u003eiter_previous_siblings\u003c/code\u003e\nmethods, that will be removed in 0.7.0. Use the \u003ccode\u003ean...\n\n_Description has been truncated_","html_url":"https://github.com/greenbone/pheme/pull/1059","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fpheme/issues/1059","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1059/packages"},{"uuid":"4479322376","node_id":"PR_kwDODnmQMs7dKieI","number":1058,"state":"closed","title":"chore(deps-dev): bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-20T22:47:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T16:51:47.000Z","updated_at":"2026-05-20T22:47:10.000Z","time_to_close":107714,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.0\"\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/microsoftgraph/msgraph-sdk-python-core/pull/1058","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoftgraph%2Fmsgraph-sdk-python-core/issues/1058","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1058/packages"},{"uuid":"4452313204","node_id":"PR_kwDOI7xefs7b1Vf9","number":42717,"state":"open","title":"Bump the minor-update group across 1 directory with 143 updates","user":"dependabot[bot]","labels":["rocm","ci/build","nvidia","dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-15T08:01:08.000Z","updated_at":"2026-05-20T05:01:30.742Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-update","update_count":143,"packages":[{"name":"regex","old_version":"2026.2.28","new_version":"2026.5.9","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"transformers","old_version":"5.5.3","new_version":"5.8.1","repository_url":"https://github.com/huggingface/transformers"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.12.0","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"prometheus-client","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"lark","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"filelock","old_version":"3.16.1","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"opentelemetry-sdk","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-api","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"tblib","old_version":"3.1.0","new_version":"3.2.2","repository_url":"https://github.com/ionelmc/python-tblib"},{"name":"absl-py","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/abseil/abseil-py"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.6.2.post1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argcomplete","old_version":"3.5.1","new_version":"3.6.3","repository_url":"https://github.com/kislyuk/argcomplete"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"audioread","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/beetbox/audioread"},{"name":"azure-core","old_version":"1.38.2","new_version":"1.41.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.29.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"blobfile","old_version":"3.0.0","new_version":"3.2.0","repository_url":"https://github.com/blobfile/blobfile"},{"name":"bm25s","old_version":"0.2.13","new_version":"0.3.9","repository_url":"https://github.com/xhluca/bm25s"},{"name":"boto3","old_version":"1.35.57","new_version":"1.43.10","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.57","new_version":"1.43.10","repository_url":"https://github.com/boto/botocore"},{"name":"click","old_version":"8.1.7","new_version":"8.4.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.10.6","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cramjam","old_version":"2.9.0","new_version":"2.11.0","repository_url":"https://github.com/milesgranger/pyrus-cramjam"},{"name":"cuda-bindings","old_version":"13.0.3","new_version":"13.2.0","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-pathfinder","old_version":"1.3.3","new_version":"1.5.4","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-toolkit","old_version":"13.0.2","new_version":"13.2.1"},{"name":"datamodel-code-generator","old_version":"0.26.3","new_version":"0.57.0","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"dataproperty","old_version":"1.0.1","new_version":"1.1.1","repository_url":"https://github.com/thombashi/DataProperty"},{"name":"decorator","old_version":"5.1.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dill","old_version":"0.3.8","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"einx","old_version":"0.3.0","new_version":"0.4.3","repository_url":"https://github.com/fferflo/einx"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastsafetensors","old_version":"0.2.2","new_version":"0.3.1","repository_url":"https://github.com/foundation-model-stack/fastsafetensors"},{"name":"fonttools","old_version":"4.55.0","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"google-api-core","old_version":"2.24.2","new_version":"2.30.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth","old_version":"2.40.2","new_version":"2.53.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"google-cloud-core","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-storage","old_version":"3.4.0","new_version":"3.10.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"google-crc32c","old_version":"1.7.1","new_version":"1.8.0","repository_url":"https://github.com/googleapis/python-crc32c"},{"name":"google-resumable-media","old_version":"2.7.2","new_version":"2.9.0","repository_url":"https://github.com/googleapis/google-resumable-media-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.3","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-reflection","old_version":"1.78.0","new_version":"1.80.0"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"harfile","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/schemathesis/harfile"},{"name":"hf-xet","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"hiredis","old_version":"3.0.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"huggingface-hub","old_version":"1.10.2","new_version":"1.15.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"humanize","old_version":"4.11.0","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.152.8","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"hypothesis-graphql","old_version":"0.11.1","new_version":"0.12.0","repository_url":"https://github.com/Stranger6667/hypothesis-graphql"},{"name":"idna","old_version":"3.10","new_version":"3.15","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/nucleic/kiwi"},{"name":"lazy-loader","old_version":"0.4","new_version":"0.5","repository_url":"https://github.com/scientific-python/lazy-loader"},{"name":"librosa","old_version":"0.10.2.post1","new_version":"0.11.0","repository_url":"https://github.com/librosa/librosa"},{"name":"matplotlib","old_version":"3.9.2","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.36.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"mteb","old_version":"2.8.3","new_version":"2.12.30","repository_url":"https://github.com/embeddings-benchmark/mteb"},{"name":"multidict","old_version":"6.1.0","new_version":"6.7.1","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":"networkx","old_version":"3.2.1","new_version":"3.4.2","repository_url":"https://github.com/networkx/networkx"},{"name":"nvidia-cublas","old_version":"13.1.0.3","new_version":"13.4.1.1"},{"name":"nvidia-cuda-cupti","old_version":"13.0.85","new_version":"13.2.75"},{"name":"nvidia-cuda-nvrtc","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-cuda-runtime","old_version":"13.0.96","new_version":"13.2.75"},{"name":"nvidia-cudnn-cu13","old_version":"9.19.0.56","new_version":"9.22.0.52"},{"name":"nvidia-cufft","old_version":"12.0.0.61","new_version":"12.2.0.46"},{"name":"nvidia-cufile","old_version":"1.15.1.6","new_version":"1.17.1.22"},{"name":"nvidia-cusolver","old_version":"12.0.4.66","new_version":"12.2.0.1"},{"name":"nvidia-cusparse","old_version":"12.6.3.3","new_version":"12.7.10.1"},{"name":"nvidia-cusparselt-cu13","old_version":"0.8.0","new_version":"0.9.1"},{"name":"nvidia-nccl-cu13","old_version":"2.28.9","new_version":"2.30.4"},{"name":"nvidia-nvjitlink","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-nvshmem-cu13","old_version":"3.4.5","new_version":"3.6.5"},{"name":"nvidia-nvtx","old_version":"13.0.85","new_version":"13.2.75"},{"name":"opentelemetry-exporter-prometheus","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pathvalidate","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/thombashi/pathvalidate"},{"name":"peft","old_version":"0.18.1","new_version":"0.19.1","repository_url":"https://github.com/huggingface/peft"},{"name":"perceptron","old_version":"0.1.4","new_version":"0.3.5","repository_url":"https://github.com/perceptron-ai-inc/perceptron"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.9.6","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":"polars","old_version":"1.29.0","new_version":"1.40.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"pooch","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/fatiando/pooch"},{"name":"propcache","old_version":"0.2.0","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.28.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pycryptodomex","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.41.1","new_version":"2.46.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-extra-types","old_version":"2.10.5","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pygments","old_version":"2.18.0","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.2.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-subtests","old_version":"0.14.1","new_version":"0.15.0","repository_url":"https://github.com/pytest-dev/pytest-subtests"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"python-rapidjson","old_version":"1.20","new_version":"1.23","repository_url":"https://github.com/python-rapidjson/python-rapidjson"},{"name":"rapidfuzz","old_version":"3.12.1","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.35.1","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"responses","old_version":"0.25.3","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"rpds-py","old_version":"0.20.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"s3transfer","old_version":"0.10.3","new_version":"0.17.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sacrebleu","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/mjpost/sacrebleu"},{"name":"safetensors","old_version":"0.4.5","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.5.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.13.1","new_version":"1.15.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"5.2.0","new_version":"5.5.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.6.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tabulate","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/astanin/python-tabulate"},{"name":"tensorizer","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/coreweave/tensorizer"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"triton","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/triton-lang/triton"},{"name":"tritonclient","old_version":"2.64.0","new_version":"2.68.0","repository_url":"https://github.com/triton-inference-server/client"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.47.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"vector-quantize-pytorch","old_version":"1.21.2","new_version":"1.29.1","repository_url":"https://github.com/lucidrains/vector-quantizer-pytorch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.7.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.7.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yarl","old_version":"1.17.1","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"conch-triton-kernels","old_version":"1.2.1","new_version":"1.3","repository_url":"https://github.com/stackav-oss/conch"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-update group with 143 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.5.9` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| [transformers](https://github.com/huggingface/transformers) | `5.5.3` | `5.8.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.0` | `2.13.4` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.0` | `0.25.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` |\n| [lark](https://github.com/lark-parser/lark) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.16.1` | `3.29.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [tblib](https://github.com/ionelmc/python-tblib) | `3.1.0` | `3.2.2` |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.4.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.4` |\n| [anyio](https://github.com/agronholm/anyio) | `4.6.2.post1` | `4.13.0` |\n| [argcomplete](https://github.com/kislyuk/argcomplete) | `3.5.1` | `3.6.3` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [audioread](https://github.com/beetbox/audioread) | `3.0.1` | `3.1.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.29.0` |\n| [blobfile](https://github.com/blobfile/blobfile) | `3.0.0` | `3.2.0` |\n| [bm25s](https://github.com/xhluca/bm25s) | `0.2.13` | `0.3.9` |\n| [boto3](https://github.com/boto/boto3) | `1.35.57` | `1.43.10` |\n| [botocore](https://github.com/boto/botocore) | `1.35.57` | `1.43.10` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.4.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.6` | `7.14.0` |\n| [cramjam](https://github.com/milesgranger/pyrus-cramjam) | `2.9.0` | `2.11.0` |\n| [cuda-bindings](https://github.com/NVIDIA/cuda-python) | `13.0.3` | `13.2.0` |\n| [cuda-pathfinder](https://github.com/NVIDIA/cuda-python) | `1.3.3` | `1.5.4` |\n| [cuda-toolkit](https://developer.nvidia.com/cuda-toolkit) | `13.0.2` | `13.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.26.3` | `0.57.0` |\n| [dataproperty](https://github.com/thombashi/DataProperty) | `1.0.1` | `1.1.1` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.3.1` |\n| [dill](https://github.com/uqfoundation/dill) | `0.3.8` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [einx](https://github.com/fferflo/einx) | `0.3.0` | `0.4.3` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastsafetensors](https://github.com/foundation-model-stack/fastsafetensors) | `0.2.2` | `0.3.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.55.0` | `4.63.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.5.0` | `1.8.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.24.2` | `2.30.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.2` | `2.53.0` |\n| [google-cloud-core](https://github.com/googleapis/google-cloud-python) | `2.4.3` | `2.6.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.4.0` | `3.10.1` |\n| [google-crc32c](https://github.com/googleapis/python-crc32c) | `1.7.1` | `1.8.0` |\n| [google-resumable-media](https://github.com/googleapis/google-resumable-media-python) | `2.7.2` | `2.9.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.3` | `3.5.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-reflection](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [harfile](https://github.com/schemathesis/harfile) | `0.3.0` | `0.4.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.4.3` | `1.5.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.0.0` | `3.3.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.10.2` | `1.15.0` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.11.0` | `4.15.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.152.8` |\n| [hypothesis-graphql](https://github.com/Stranger6667/hypothesis-graphql) | `0.11.1` | `0.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.15` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.5.0` |\n| [lazy-loader](https://github.com/scientific-python/lazy-loader) | `0.4` | `0.5` |\n| [librosa](https://github.com/librosa/librosa) | `0.10.2.post1` | `0.11.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.9.2` | `3.10.9` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.36.0` |\n| [mteb](https://github.com/embeddings-benchmark/mteb) | `2.8.3` | `2.12.30` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.1.0` | `6.7.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.2.1` | `3.4.2` |\n| [nvidia-cublas](https://developer.nvidia.com/cuda-zone) | `13.1.0.3` | `13.4.1.1` |\n| [nvidia-cuda-cupti](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [nvidia-cuda-nvrtc](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-cuda-runtime](https://developer.nvidia.com/cuda-zone) | `13.0.96` | `13.2.75` |\n| [nvidia-cudnn-cu13](https://developer.nvidia.com/cuda-zone) | `9.19.0.56` | `9.22.0.52` |\n| [nvidia-cufft](https://developer.nvidia.com/cuda-zone) | `12.0.0.61` | `12.2.0.46` |\n| [nvidia-cufile](https://developer.nvidia.com/cuda-zone) | `1.15.1.6` | `1.17.1.22` |\n| [nvidia-cusolver](https://developer.nvidia.com/cuda-zone) | `12.0.4.66` | `12.2.0.1` |\n| [nvidia-cusparse](https://developer.nvidia.com/cuda-zone) | `12.6.3.3` | `12.7.10.1` |\n| [nvidia-cusparselt-cu13](https://developer.nvidia.com/cusparselt) | `0.8.0` | `0.9.1` |\n| [nvidia-nccl-cu13](https://developer.nvidia.com/cuda-zone) | `2.28.9` | `2.30.4` |\n| [nvidia-nvjitlink](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-nvshmem-cu13](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.6.5` |\n| [nvidia-nvtx](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [opentelemetry-exporter-prometheus](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [pathvalidate](https://github.com/thombashi/pathvalidate) | `3.2.1` | `3.3.1` |\n| [peft](https://github.com/huggingface/peft) | `0.18.1` | `0.19.1` |\n| [perceptron](https://github.com/perceptron-ai-inc/perceptron) | `0.1.4` | `0.3.5` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.9.6` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.29.0` | `1.40.1` |\n| [pooch](https://github.com/fatiando/pooch) | `1.8.2` | `1.9.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.2.0` | `0.5.2` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.28.0` |\n| [pycryptodomex](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.1` | `2.46.4` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.10.5` | `2.11.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.0` | `3.3.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [pytest-subtests](https://github.com/pytest-dev/pytest-subtests) | `0.14.1` | `0.15.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) | `1.20` | `1.23` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.12.1` | `3.14.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.37.0` |\n| [responses](https://github.com/getsentry/responses) | `0.25.3` | `0.26.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.1` | `0.30.0` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.3` | `0.17.0` |\n| [sacrebleu](https://github.com/mjpost/sacrebleu) | `2.4.3` | `2.6.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.4.5` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.13.1` | `1.15.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.0` | `5.5.0` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.6.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tabulate](https://github.com/astanin/python-tabulate) | `0.9.0` | `0.10.0` |\n| [tensorizer](https://github.com/coreweave/tensorizer) | `2.10.1` | `2.12.1` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.1` |\n| [triton](https://github.com/triton-lang/triton) | `3.6.0` | `3.7.0` |\n| [tritonclient](https://github.com/triton-inference-server/client) | `2.64.0` | `2.68.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.47.0` |\n| [vector-quantize-pytorch](https://github.com/lucidrains/vector-quantizer-pytorch) | `1.21.2` | `1.29.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.7.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.7.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.23.0` |\n| [conch-triton-kernels](https://github.com/stackav-oss/conch) | `1.2.1` | `1.3` |\n\n\nUpdates `regex` from 2026.2.28 to 2026.5.9\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.5.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReverse matching with full unicode casefolding could lead to out-of-range string indexes.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eA fix for older Python versions before free-threading was  supported.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eMore fixes for free-threading.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\n\u003cp\u003eAdded prefixmatch as alias of match, like in re module.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.1.15\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/mrabarnett/mrab-regex/commit/e57d185bb711729091907b23edac5dcba0426243\"\u003e\u003ccode\u003ee57d185\u003c/code\u003e\u003c/a\u003e Reverse matching with full unicode casefolding lead to out-of-range string in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.5.9\"\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.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.3...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `transformers` from 5.5.3 to 5.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/transformers/releases\"\u003etransformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePatch release v5.8.1\u003c/h1\u003e\n\u003cp\u003eThis release is mainly to fix the Deepseek V4 integration!!!\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e[fix] Add fatal_error to ContinuousBatchingManager so the serving... by \u003ca href=\"https://github.com/qgallouedec\"\u003e\u003ccode\u003e@​qgallouedec\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/remi-or\"\u003e\u003ccode\u003e@​remi-or\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix WeightConverter regex incorrectly matching shared_experts as experts by \u003ca href=\"https://github.com/silencelamb\"\u003e\u003ccode\u003e@​silencelamb\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/claude\"\u003e\u003ccode\u003e@​claude\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix deepseek v4 by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45892\"\u003e#45892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeepseek v4 csa mask collapse by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Sawyer117\"\u003e\u003ccode\u003e@​Sawyer117\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45928\"\u003e#45928\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 5.8.0\u003c/h2\u003e\n\u003ch1\u003eRelease v5.8.0\u003c/h1\u003e\n\u003ch2\u003eNew Model additions\u003c/h2\u003e\n\u003ch3\u003eDeepSeek-V4\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eDeepSeek-V4 is the next-generation MoE (Mixture of Experts) language model from DeepSeek that introduces several architectural innovations over DeepSeek-V3. The architecture replaces Multi-head Latent Attention (MLA) with a hybrid local + long-range attention design, swaps residual connections for Manifold-Constrained Hyper-Connections (mHC), and bootstraps the first few MoE layers with a static token-id → expert-id hash table. This implementation covers DeepSeek-V4-Flash, DeepSeek-V4-Pro, and their -Base pretrained variants, which share the same architecture but differ in width, depth, expert count and weights.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/deepseek_v4\"\u003eDocumentation\u003c/a\u003e | \u003ca href=\"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash/blob/main/DeepSeek_V4.pdf\"\u003ePaper\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd DeepSeek V4 (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45643\"\u003e#45643\u003c/a\u003e) by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45643\"\u003e#45643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGemma 4 Assistant\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eGemma 4 Assistant is a small, text-only model that enables speculative decoding for Gemma 4 models using the Multi-Token Prediction (MTP) method and associated candidate generator. The model shares the same Gemma4TextModel backbone as other Gemma 4 models but uses KV sharing throughout the entire model, allowing it to reuse the KV cache populated by the target model and skip the pre-fill phase entirely. This architecture includes cross-attention to make the most of the target model's context, allowing the assistant to accurately predict more drafted tokens per drafting round.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/gemma4_assistant\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFirst model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45788\"\u003e#45788\u003c/a\u003e) by \u003ca href=\"https://github.com/SindhuRaghuram97\"\u003e\u003ccode\u003e@​SindhuRaghuram97\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45788\"\u003e#45788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGraniteSpeechPlus\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eGranite Speech Plus is a variant of Granite Speech that enhances the projector by consuming the concatenation of the encoder's final hidden states with an arbitrary subset of its intermediate hidden states along the feature dimension. It is a multimodal speech-to-text model that can transcribe audio, provide speaker annotation and word level timestamps by responding to text prompts. The model inherits the same architecture components as Granite Speech including the speech encoder, query transformer projector, language model, and optional LoRA adapter.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/granite_speech_plus\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for a new Granite-Speech-Plus model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45695\"\u003e#45695\u003c/a\u003e) by \u003ca href=\"https://github.com/zvik\"\u003e\u003ccode\u003e@​zvik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45695\"\u003e#45695\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGranite4Vision\u003c/h3\u003e\n\u003cp\u003eGranite Vision 4.1 is a vision-language model from IBM Research designed for enterprise-grade document data extraction. It specializes in chart extraction (Chart2CSV, Chart2Summary, Chart2Code), table extraction (JSON, HTML, OTSL), and semantic key-value pair extraction. The model builds on LLaVA-NeXT with architectural innovations including SigLIP2 Vision Encoder, Window Q-Former Projectors, and DeepStack Feature Injection with 8 vision-to-LLM injection points.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/granite4_vision\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Granite 4.1 Vision (granite4_vision) (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45597\"\u003e#45597\u003c/a\u003e) by \u003ca href=\"https://github.com/artem-spector\"\u003e\u003ccode\u003e@​artem-spector\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45597\"\u003e#45597\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/huggingface/transformers/commit/cc832f9055ba11c8c55f918ab4bda9472b910d48\"\u003e\u003ccode\u003ecc832f9\u003c/code\u003e\u003c/a\u003e up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/f966d7b36278c7ca15967af062c4556f8bf4eea4\"\u003e\u003ccode\u003ef966d7b\u003c/code\u003e\u003c/a\u003e Deepseek v4 csa mask collapse (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45928\"\u003e#45928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/283f3f08614c0ee09e0bdc60d57dbc4d8d37af39\"\u003e\u003ccode\u003e283f3f0\u003c/code\u003e\u003c/a\u003e Fix deepseek v4 (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45892\"\u003e#45892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/4e0be9c4c5f2edb62f2e28c28c4149d3b84a3ae0\"\u003e\u003ccode\u003e4e0be9c\u003c/code\u003e\u003c/a\u003e Fix WeightConverter regex incorrectly matching shared_experts as experts in D...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/ec852625706cbe9a1264949659dad82b43fafa57\"\u003e\u003ccode\u003eec85262\u003c/code\u003e\u003c/a\u003e [fix] Add \u003ccode\u003efatal_error\u003c/code\u003e to \u003ccode\u003eContinuousBatchingManager\u003c/code\u003e so the serving layer c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/049d2bf1220747b6d39e2a978b9f5fe0defa1dca\"\u003e\u003ccode\u003e049d2bf\u003c/code\u003e\u003c/a\u003e v5.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/2871cafffb3b221b5f1df7e59033a15a7830309f\"\u003e\u003ccode\u003e2871caf\u003c/code\u003e\u003c/a\u003e Add Granite 4.1 Vision (granite4_vision) (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45597\"\u003e#45597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/aaec1092d413d0ea7249101ea43f74b5d6d60936\"\u003e\u003ccode\u003eaaec109\u003c/code\u003e\u003c/a\u003e fix: correct spelling in continuous_api docstring (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45749\"\u003e#45749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/7050d0e0bf5a97c7c0149c319681601373621eae\"\u003e\u003ccode\u003e7050d0e\u003c/code\u003e\u003c/a\u003e Fix link to modular transformers documentation (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45746\"\u003e#45746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/df2f2b539902c78db6a0f71fb2c175880e390576\"\u003e\u003ccode\u003edf2f2b5\u003c/code\u003e\u003c/a\u003e Gemma4: fix failed test cases (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45568\"\u003e#45568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/transformers/compare/v5.5.3...v5.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.2 to 0.23.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.23.1\u003c/h2\u003e\n\u003ch2\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003etokenizers 0.23.1\u003c/code\u003e is the first proper stable release in the \u003ccode\u003e0.23\u003c/code\u003e line — \u003ccode\u003e0.23.0\u003c/code\u003e only ever shipped as \u003ccode\u003erc0\u003c/code\u003e because the release pipeline itself was broken (Node side hadn't shipped multi-platform binaries since 2023, Python side was on \u003ccode\u003epyo3 0.27\u003c/code\u003e without free-threaded support). \u003ccode\u003e0.23.1\u003c/code\u003e is the version where everything actually goes out the door together: full Node multi-platform wheels for the first time in years, Python 3.14 (regular \u003cstrong\u003eand\u003c/strong\u003e free-threaded \u003ccode\u003e3.14t\u003c/code\u003e), full type hints for every Python class, and a stack of measurable perf wins on the BPE / added-vocab hot paths.\u003c/p\u003e\n\u003cp\u003eThere is no functional \u003ccode\u003e0.23.0\u003c/code\u003e published — we tag \u003ccode\u003e0.23.1\u003c/code\u003e directly so users don't accidentally pull a never-shipped version.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🚨 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDrop Python 3.9\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1952\"\u003e#1952\u003c/a\u003e) — \u003ccode\u003erequires-python = \u0026quot;\u0026gt;=3.10\u0026quot;\u003c/code\u003e; 3.9 users stay on \u003ccode\u003e0.22.x\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eadd_tokens\u003c/code\u003e normalizes \u003ccode\u003econtent\u003c/code\u003e at insertion\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e) — re-saved \u003ccode\u003etokenizer.json\u003c/code\u003e may differ in the \u003ccode\u003eadded_tokens\u003c/code\u003e block. Existing files load unchanged.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eType stubs are precise\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1928\"\u003e#1928\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1997\"\u003e#1997\u003c/a\u003e) — methods that returned \u003ccode\u003eAny\u003c/code\u003e now return real types; \u003ccode\u003emypy --strict\u003c/code\u003e may surface previously-hidden errors. Stub layout also moved from \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;/__init__.pyi\u003c/code\u003e to \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;.pyi\u003c/code\u003e. This breaks the surface of some of the processors like \u003ccode\u003eRobertaProcessign\u003c/code\u003e's \u003ccode\u003e__init__\u003c/code\u003e .\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e3.14t-only\u003c/strong\u003e: setters/getters return \u003ccode\u003ePyResult\u0026lt;T\u0026gt;\u003c/code\u003e because of \u003ccode\u003eArc\u0026lt;RwLock\u0026lt;Tokenizer\u0026gt;\u0026gt;\u003c/code\u003e; a poisoned lock surfaces as \u003ccode\u003ePyException\u003c/code\u003e instead of a panic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e⚡ Performance — measured locally on this Mac, not lifted from PRs\u003c/h2\u003e\n\u003cp\u003eRun with \u003ccode\u003ecargo bench --bench \u0026lt;name\u0026gt; -- --save-baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.22.2\u003c/code\u003e, then \u003ccode\u003e--baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.23.1\u003c/code\u003e. Numbers are point-in-time wall clock on a single laptop; relative deltas are what matters, absolute numbers will differ on CI hardware.\u003c/p\u003e\n\u003ch3\u003eAdded-vocabulary deserialize — the headline win (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003ebench: improve added_vocab_deserialize to reflect real-world workloads\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2000\"\u003e#2000\u003c/a\u003e) is now representative of how transformers actually loads tokenizer.json files. The combined effect of \u003ccode\u003edaachorse\u003c/code\u003e for the matching automaton plus the normalize-on-insert refactor is enormous on this workload:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~410 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e248 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.1 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e273 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~395 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e235 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.4 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e290 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e400k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~15 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e980 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−94%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eReal-world impact: loading a Llama-3-style tokenizer with a large set of added tokens dropped from \u0026quot;noticeable pause\u0026quot; to \u0026quot;instant\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eBPE encode\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch, no cache\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e530 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e446 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−16%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch\u003c/code\u003e (cached)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e690 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e685 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode\u003c/code\u003e (single)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.95 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.94 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (small)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e32.6 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e31.5 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−3%\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (big)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.01 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e988 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−2%\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe BPE per-thread cache PR (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e) shows much larger wins on highly-parallel workloads (+47–62% at 88+ threads on a server box, per the PR's own measurements on Vera). Single-thread batch numbers above are flat or slightly improved because cache-hit overhead was already low without contention.\u003c/p\u003e\n\u003ch3\u003eLlama-3 encode\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/huggingface/tokenizers/commit/7f1623b90b5adfb9bc327d4c3468d2f70bbce262\"\u003e\u003ccode\u003e7f1623b\u003c/code\u003e\u003c/a\u003e Bump version to 0.23.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bbe43ad73d8fc8932b9d0e657ddee3cd70c649a4\"\u003e\u003ccode\u003ebbe43ad\u003c/code\u003e\u003c/a\u003e ci: release workflow fixes (node + python) (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2043\"\u003e#2043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ab0c5d8fc13eb1c5001d9c06806635e2b5a42e9f\"\u003e\u003ccode\u003eab0c5d8\u003c/code\u003e\u003c/a\u003e Fix node release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2034\"\u003e#2034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/decd8e07dad15f296c0adc2bc3a560f62d3de2eb\"\u003e\u003ccode\u003edecd8e0\u003c/code\u003e\u003c/a\u003e bindings/python: free-threaded Python (3.14t) support (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2041\"\u003e#2041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/3992692d483bf3177219b52cb101b1bb055c18e6\"\u003e\u003ccode\u003e3992692\u003c/code\u003e\u003c/a\u003e update for release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2033\"\u003e#2033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bcdd25b97fcd78549903082ecf3ddd87d42c456b\"\u003e\u003ccode\u003ebcdd25b\u003c/code\u003e\u003c/a\u003e BPE cache: per-thread read-through cache to avoid RwLock atomics on hits (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/618eb383f43e207139eb5cdb9bca17796b5e9bd7\"\u003e\u003ccode\u003e618eb38\u003c/code\u003e\u003c/a\u003e Bump follow-redirects in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b6b1688bef2e87efc91af18edf7ac38b4d2dfbe6\"\u003e\u003ccode\u003eb6b1688\u003c/code\u003e\u003c/a\u003e chore: bump doc-builder SHA for PR upload workflow (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2025\"\u003e#2025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/19015d6b44aa3896626de5092e4171aed1b56d5b\"\u003e\u003ccode\u003e19015d6\u003c/code\u003e\u003c/a\u003e fix: use uvx --with cairosvg instead of uv pip install --system (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/efbcc68e321c364c8f9541f1c93a158df54d7da4\"\u003e\u003ccode\u003eefbcc68\u003c/code\u003e\u003c/a\u003e Ci benchmarks (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2019\"\u003e#2019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.2...v0.23.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\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/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.0 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\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/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.0...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003c...\n\n_Description has been truncated_","html_url":"https://github.com/vllm-project/vllm/pull/42717","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vllm-project%2Fvllm/issues/42717","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42717/packages"},{"uuid":"4451330003","node_id":"PR_kwDOSdbhSc7byPSZ","number":39,"state":"closed","title":"Bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-15T04:46:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T04:46:49.000Z","updated_at":"2026-05-15T04:47:07.000Z","time_to_close":10,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/damariskoech/aio-http-/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/damariskoech%2Faio-http-/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"},{"uuid":"4409576139","node_id":"PR_kwDONrwnDc7ZslCF","number":581,"state":"closed","title":"chore(deps): bump the production group across 1 directory with 52 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-05-29T23:35:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T21:42:28.000Z","updated_at":"2026-05-29T23:35:57.000Z","time_to_close":1821207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production","update_count":52,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.7","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"fastapi","old_version":"0.120.3","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cli","old_version":"0.0.7","new_version":"0.0.24","repository_url":"https://github.com/fastapi/fastapi-cli"},{"name":"fastapi-keycloak-middleware","old_version":"1.2.0","new_version":"1.6.0"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.10","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jwcrypto","old_version":"1.5.6","new_version":"1.5.7","repository_url":"https://github.com/latchset/jwcrypto"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"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":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.1","new_version":"2.46.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-asyncio","old_version":"0.15.1","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"rfc3986","old_version":"1.5.0","new_version":"2.0.0","repository_url":"https://github.com/python-hyper/rfc3986"},{"name":"rich","old_version":"14.0.0","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rich-toolkit","old_version":"0.14.1","new_version":"0.19.7"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlmodel","old_version":"0.0.22","new_version":"0.0.38","repository_url":"https://github.com/fastapi/sqlmodel"},{"name":"starlette","old_version":"0.49.1","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.30.6","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"14.2","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"attrs","old_version":"25.3.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"cached-property","old_version":"1.5.2","new_version":"2.0.1","repository_url":"https://github.com/pydanny/cached-property"},{"name":"filelock","old_version":"3.20.3","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-keycloak","old_version":"4.7.3","new_version":"7.1.1","repository_url":"https://github.com/marcospereirampj/python-keycloak"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production group with 52 updates in the /ichub-backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.13.0` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.5.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.3` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `48.0.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.120.3` | `0.136.1` |\n| [fastapi-cli](https://github.com/fastapi/fastapi-cli) | `0.0.7` | `0.0.24` |\n| fastapi-keycloak-middleware | `1.2.0` | `1.6.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.5.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.13` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jwcrypto](https://github.com/latchset/jwcrypto) | `1.5.6` | `1.5.7` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.2` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.2` | `2.13.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.33.1` | `2.46.4` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.15.1` | `1.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.27` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [rfc3986](https://github.com/python-hyper/rfc3986) | `1.5.0` | `2.0.0` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `15.0.0` |\n| rich-toolkit | `0.14.1` | `0.19.7` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.49` |\n| [sqlmodel](https://github.com/fastapi/sqlmodel) | `0.0.22` | `0.0.38` |\n| [starlette](https://github.com/Kludex/starlette) | `0.49.1` | `1.0.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.1` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.46.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.4` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `14.2` | `16.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [attrs](https://github.com/python-attrs/attrs) | `25.3.0` | `26.1.0` |\n| [cached-property](https://github.com/pydanny/cached-property) | `1.5.2` | `2.0.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.29.0` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-keycloak](https://github.com/marcospereirampj/python-keycloak) | `4.7.3` | `7.1.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n\n\nUpdates `anyio` from 4.9.0 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged all functions currently raising the private \u003ccode\u003eNoCurrentAsyncBackend\u003c/code\u003e exception (since v4.12.0) to instead raise the public \u003ccode\u003eNoEventLoopError\u003c/code\u003e exception (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with instance methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\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/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.2.2.post1 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs 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/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ 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/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml 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/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI 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/build/pull/1056\"\u003epypa/build#1056\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/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links 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/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change 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/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip 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/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\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/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines 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/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run 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/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 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/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation 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/build/pull/1050\"\u003epypa/build#1050\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/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate 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/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports 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/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes 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/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations 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/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT 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/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI 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/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET 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/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL 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/build/pull/1029\"\u003epypa/build#1029\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/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\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/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.04.22\"\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.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\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\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.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\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\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/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.1...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.2 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/click/8.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\u003c/a\u003e\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\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/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.7 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\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/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.7...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.7.0 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.10.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\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/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns/btreezone.py provides another zone versioned implementation built on top of a\nB-tree.  It maintains DNSSEC sort order, labels nodes as delegation points or glue,\nand can find the \u0026quot;bounds\u0026quot; of a name (useful for DNSSEC responses).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/query.py now provides make_socket(), make_ssl_socket(), and make_ssl_context()\nto make using persistent connections with the query code easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/win32util.py now supports explicitly setting the configuration method used to get\nsystem dns info, using the set_config_method() function.   There is a new configuration\nmethod that uses the Win32 API, which can be set using\nset_config_method(ConfigMethod.Win32).  We are considering making the Win32 API\nthe default in the future as we believe it to be the most accurate.  Any feedback on\nit compared to the other methods is welcome.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSYNC record is now supported.  This type is still in draft stage at the IETF\nand is subject to change.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.10.\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/rthalley/dnspython/commit/77fd94cd9716faf23e0a6e333f6568fc24284402\"\u003e\u003ccode\u003e77fd94c\u003c/code\u003e\u003c/a\u003e 2.8.0 versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/884f38345a8152342fe8ab5da8db9aab654051ba\"\u003e\u003ccode\u003e884f383\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/1938fe331f97376bf91c028fbfb8c7588c1b84f4\"\u003e\u003ccode\u003e1938fe3\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a35d6925efe20744e8cf7545d19d03ba06e7ab6f\"\u003e\u003ccode\u003ea35d692\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c862baaf0d0aa36d2e7003dfe226cd6ad4d827c4\"\u003e\u003ccode\u003ec862baa\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/0945d5923d58048c17325975f70f0738c87570b4\"\u003e\u003ccode\u003e0945d59\u003c/code\u003e\u003c/a\u003e more lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/8fa6766d2f7a2431372fc912fb334e752290ebf2\"\u003e\u003ccode\u003e8fa6766\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/641633503ee6b07bf382594ac04707072b90de18\"\u003e\u003ccode\u003e6416335\u003c/code\u003e\u003c/a\u003e Type syntax (\u003ca href=\"https://redirect.github.com/rthalley/dnspython/issues/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a4591447b7d6e38479bcddb14de3b69f314e7009\"\u003e\u003ccode\u003ea459144\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a0d5f172e89f30709b47b59fb0919d8cf137f611\"\u003e\u003ccode\u003ea0d5f17\u003c/code\u003e\u003c/a\u003e fix the all entries\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.7.0...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `email-validator` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JoshData/python-email-validator/releases\"\u003eemail-validator's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/blob/main/CHANGELOG.md\"\u003eemail-validator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.0 (August 26, 2025)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/commit/030a63a183a6a66450e98381ca9a23ab9769706a\"\u003e\u003ccode\u003e030a63a\u003c/code\u003e\u003c/a\u003e Version 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/e943a0f07f5c130b4a419e0cd79f705f36bf24fe\"\u003e\u003ccode\u003ee943a0f\u003c/code\u003e\u003c/a\u003e Raise TypeError when an invalid argument is passed for email, closes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/155\"\u003e#155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/f90d256045dc1ccbcffd5514189267d14a9e3ea1\"\u003e\u003ccode\u003ef90d256\u003c/code\u003e\u003c/a\u003e Remove local part length check unless new strict flag is given, fixes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/158\"\u003e#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/98800bac023b8713351393a5043034065f1ea6cb\"\u003e\u003ccode\u003e98800ba\u003c/code\u003e\u003c/a\u003e Add explicit checks for internationalized domain name characters invalid unde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/936aead3bf5c608f8561954e0d2955b7f97bfdad\"\u003e\u003ccode\u003e936aead\u003c/code\u003e\u003c/a\u003e Fix final syntax checks on normalized internationalized domains checking the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/8043de49596f08d54a07e2bc7c442ced074216a6\"\u003e\u003ccode\u003e8043de4\u003c/code\u003e\u003c/a\u003e NFC-normalize display names per UTS \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/39\"\u003e#39\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/bc08faa2a74b51a9e7ba7ff4f995c0b475cb5b12\"\u003e\u003ccode\u003ebc08faa\u003c/code\u003e\u003c/a\u003e Add one-off error messages for full-width-at and small-commercial-at which ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/a1c90ab58fb0f5d969a8351a68ca15bff068527c\"\u003e\u003ccode\u003ea1c90ab\u003c/code\u003e\u003c/a\u003e Split exceptions_types.py into exceptions.py and types.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/dbcf07cc5c8066c14b6dc58d2dbb4a1e582eeefd\"\u003e\u003ccode\u003edbcf07c\u003c/code\u003e\u003c/a\u003e Change package name from using underscore to dash to match PyPi normalized pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/7c22208ee5b82c377e960ddcea5293691eadc6cc\"\u003e\u003ccode\u003e7c22208\u003c/code\u003e\u003c/a\u003e Support ALLOW_DISPLAY_NAME and ALLOW_EMPTY_LOCAL in the CLI (\u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JoshData/python-email-validator/compare/v2.2.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.1\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/eclipse-tractusx/industry-core-hub/pull/581","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-tractusx%2Findustry-core-hub/issues/581","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/581/packages"},{"uuid":"4374224451","node_id":"PR_kwDOI7xefs7X4umm","number":41606,"state":"closed","title":"Bump the minor-update group across 1 directory with 140 updates","user":"dependabot[bot]","labels":["rocm","ci/build","nvidia","dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-05-05T23:42:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-04T05:33:52.000Z","updated_at":"2026-05-05T23:42:43.000Z","time_to_close":151729,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-update","update_count":140,"packages":[{"name":"regex","old_version":"2026.2.28","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"transformers","old_version":"5.5.3","new_version":"5.7.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.12.0","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"prometheus-client","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"lark","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"filelock","old_version":"3.16.1","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"opentelemetry-sdk","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-api","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"fastsafetensors","old_version":"0.2.2","new_version":"0.3","repository_url":"https://github.com/foundation-model-stack/fastsafetensors"},{"name":"absl-py","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/abseil/abseil-py"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.6.2.post1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argcomplete","old_version":"3.5.1","new_version":"3.6.3","repository_url":"https://github.com/kislyuk/argcomplete"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"audioread","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/beetbox/audioread"},{"name":"azure-core","old_version":"1.38.2","new_version":"1.40.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"blobfile","old_version":"3.0.0","new_version":"3.2.0","repository_url":"https://github.com/blobfile/blobfile"},{"name":"bm25s","old_version":"0.2.13","new_version":"0.3.8","repository_url":"https://github.com/xhluca/bm25s"},{"name":"boto3","old_version":"1.35.57","new_version":"1.43.3","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.57","new_version":"1.43.3","repository_url":"https://github.com/boto/botocore"},{"name":"click","old_version":"8.1.7","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.10.6","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cramjam","old_version":"2.9.0","new_version":"2.11.0","repository_url":"https://github.com/milesgranger/pyrus-cramjam"},{"name":"cuda-bindings","old_version":"13.0.3","new_version":"13.2.0","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-pathfinder","old_version":"1.3.3","new_version":"1.5.4","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-toolkit","old_version":"13.0.2","new_version":"13.2.1"},{"name":"datamodel-code-generator","old_version":"0.26.3","new_version":"0.56.1","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"dataproperty","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/thombashi/DataProperty"},{"name":"decorator","old_version":"5.1.1","new_version":"5.2.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dill","old_version":"0.3.8","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"einx","old_version":"0.3.0","new_version":"0.4.3","repository_url":"https://github.com/fferflo/einx"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fonttools","old_version":"4.55.0","new_version":"4.62.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"google-api-core","old_version":"2.24.2","new_version":"2.30.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth","old_version":"2.40.2","new_version":"2.50.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"google-cloud-core","old_version":"2.4.3","new_version":"2.5.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-storage","old_version":"3.4.0","new_version":"3.10.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"google-crc32c","old_version":"1.7.1","new_version":"1.8.0","repository_url":"https://github.com/googleapis/python-crc32c"},{"name":"google-resumable-media","old_version":"2.7.2","new_version":"2.8.2","repository_url":"https://github.com/googleapis/google-resumable-media-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.74.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.3","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-reflection","old_version":"1.78.0","new_version":"1.80.0"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"harfile","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/schemathesis/harfile"},{"name":"hiredis","old_version":"3.0.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"huggingface-hub","old_version":"1.10.2","new_version":"1.13.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"humanize","old_version":"4.11.0","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.152.4","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"hypothesis-graphql","old_version":"0.11.1","new_version":"0.12.0","repository_url":"https://github.com/Stranger6667/hypothesis-graphql"},{"name":"idna","old_version":"3.10","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/nucleic/kiwi"},{"name":"lazy-loader","old_version":"0.4","new_version":"0.5","repository_url":"https://github.com/scientific-python/lazy-loader"},{"name":"librosa","old_version":"0.10.2.post1","new_version":"0.11.0","repository_url":"https://github.com/librosa/librosa"},{"name":"matplotlib","old_version":"3.9.2","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.36.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"mteb","old_version":"2.8.3","new_version":"2.12.30","repository_url":"https://github.com/embeddings-benchmark/mteb"},{"name":"multidict","old_version":"6.1.0","new_version":"6.7.1","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":"networkx","old_version":"3.2.1","new_version":"3.4.2","repository_url":"https://github.com/networkx/networkx"},{"name":"nvidia-cublas","old_version":"13.1.0.3","new_version":"13.4.1.1"},{"name":"nvidia-cuda-cupti","old_version":"13.0.85","new_version":"13.2.75"},{"name":"nvidia-cuda-nvrtc","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-cuda-runtime","old_version":"13.0.96","new_version":"13.2.75"},{"name":"nvidia-cudnn-cu13","old_version":"9.19.0.56","new_version":"9.21.1.3"},{"name":"nvidia-cufft","old_version":"12.0.0.61","new_version":"12.2.0.46"},{"name":"nvidia-cufile","old_version":"1.15.1.6","new_version":"1.17.1.22"},{"name":"nvidia-cusolver","old_version":"12.0.4.66","new_version":"12.2.0.1"},{"name":"nvidia-cusparse","old_version":"12.6.3.3","new_version":"12.7.10.1"},{"name":"nvidia-cusparselt-cu13","old_version":"0.8.0","new_version":"0.9.1"},{"name":"nvidia-nccl-cu13","old_version":"2.28.9","new_version":"2.30.4"},{"name":"nvidia-nvjitlink","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-nvshmem-cu13","old_version":"3.4.5","new_version":"3.6.5"},{"name":"nvidia-nvtx","old_version":"13.0.85","new_version":"13.2.75"},{"name":"opentelemetry-exporter-prometheus","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pathvalidate","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/thombashi/pathvalidate"},{"name":"peft","old_version":"0.18.1","new_version":"0.19.1","repository_url":"https://github.com/huggingface/peft"},{"name":"perceptron","old_version":"0.1.4","new_version":"0.2.1","repository_url":"https://github.com/perceptron-ai-inc/perceptron"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.9.6","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":"polars","old_version":"1.29.0","new_version":"1.40.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"pooch","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/fatiando/pooch"},{"name":"propcache","old_version":"0.2.0","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.27.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pycryptodomex","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.41.1","new_version":"2.46.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-extra-types","old_version":"2.10.5","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pygments","old_version":"2.18.0","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.2.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-subtests","old_version":"0.14.1","new_version":"0.15.0","repository_url":"https://github.com/pytest-dev/pytest-subtests"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"python-rapidjson","old_version":"1.20","new_version":"1.23","repository_url":"https://github.com/python-rapidjson/python-rapidjson"},{"name":"rapidfuzz","old_version":"3.12.1","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.35.1","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"responses","old_version":"0.25.3","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"rpds-py","old_version":"0.20.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"s3transfer","old_version":"0.10.3","new_version":"0.17.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sacrebleu","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/mjpost/sacrebleu"},{"name":"safetensors","old_version":"0.4.5","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.5.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.13.1","new_version":"1.15.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"5.2.0","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.6.0","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tabulate","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/astanin/python-tabulate"},{"name":"tblib","old_version":"3.1.0","new_version":"3.2.2","repository_url":"https://github.com/ionelmc/python-tblib"},{"name":"tensorizer","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/coreweave/tensorizer"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"tritonclient","old_version":"2.64.0","new_version":"2.68.0","repository_url":"https://github.com/triton-inference-server/client"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"vector-quantize-pytorch","old_version":"1.21.2","new_version":"1.28.2","repository_url":"https://github.com/lucidrains/vector-quantizer-pytorch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.7.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.7.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yarl","old_version":"1.17.1","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"conch-triton-kernels","old_version":"1.2.1","new_version":"1.3","repository_url":"https://github.com/stackav-oss/conch"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-update group with 140 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.4.4` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.33.1` |\n| [transformers](https://github.com/huggingface/transformers) | `5.5.3` | `5.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.0` | `2.13.3` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.0` | `0.25.0` |\n| [lark](https://github.com/lark-parser/lark) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.16.1` | `3.29.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [fastsafetensors](https://github.com/foundation-model-stack/fastsafetensors) | `0.2.2` | `0.3` |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.4.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.4` |\n| [anyio](https://github.com/agronholm/anyio) | `4.6.2.post1` | `4.13.0` |\n| [argcomplete](https://github.com/kislyuk/argcomplete) | `3.5.1` | `3.6.3` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [audioread](https://github.com/beetbox/audioread) | `3.0.1` | `3.1.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.40.0` |\n| [blobfile](https://github.com/blobfile/blobfile) | `3.0.0` | `3.2.0` |\n| [bm25s](https://github.com/xhluca/bm25s) | `0.2.13` | `0.3.8` |\n| [boto3](https://github.com/boto/boto3) | `1.35.57` | `1.43.3` |\n| [botocore](https://github.com/boto/botocore) | `1.35.57` | `1.43.3` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.6` | `7.13.5` |\n| [cramjam](https://github.com/milesgranger/pyrus-cramjam) | `2.9.0` | `2.11.0` |\n| [cuda-bindings](https://github.com/NVIDIA/cuda-python) | `13.0.3` | `13.2.0` |\n| [cuda-pathfinder](https://github.com/NVIDIA/cuda-python) | `1.3.3` | `1.5.4` |\n| [cuda-toolkit](https://developer.nvidia.com/cuda-toolkit) | `13.0.2` | `13.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.26.3` | `0.56.1` |\n| [dataproperty](https://github.com/thombashi/DataProperty) | `1.0.1` | `1.1.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.2.1` |\n| [dill](https://github.com/uqfoundation/dill) | `0.3.8` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [einx](https://github.com/fferflo/einx) | `0.3.0` | `0.4.3` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.55.0` | `4.62.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.5.0` | `1.8.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.24.2` | `2.30.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.2` | `2.50.0` |\n| [google-cloud-core](https://github.com/googleapis/google-cloud-python) | `2.4.3` | `2.5.1` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.4.0` | `3.10.1` |\n| [google-crc32c](https://github.com/googleapis/python-crc32c) | `1.7.1` | `1.8.0` |\n| [google-resumable-media](https://github.com/googleapis/google-resumable-media-python) | `2.7.2` | `2.8.2` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.74.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.3` | `3.5.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-reflection](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [harfile](https://github.com/schemathesis/harfile) | `0.3.0` | `0.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.0.0` | `3.3.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.10.2` | `1.13.0` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.11.0` | `4.15.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.152.4` |\n| [hypothesis-graphql](https://github.com/Stranger6667/hypothesis-graphql) | `0.11.1` | `0.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.13` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.5.0` |\n| [lazy-loader](https://github.com/scientific-python/lazy-loader) | `0.4` | `0.5` |\n| [librosa](https://github.com/librosa/librosa) | `0.10.2.post1` | `0.11.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.9.2` | `3.10.9` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.36.0` |\n| [mteb](https://github.com/embeddings-benchmark/mteb) | `2.8.3` | `2.12.30` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.1.0` | `6.7.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.2.1` | `3.4.2` |\n| [nvidia-cublas](https://developer.nvidia.com/cuda-zone) | `13.1.0.3` | `13.4.1.1` |\n| [nvidia-cuda-cupti](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [nvidia-cuda-nvrtc](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-cuda-runtime](https://developer.nvidia.com/cuda-zone) | `13.0.96` | `13.2.75` |\n| [nvidia-cudnn-cu13](https://developer.nvidia.com/cuda-zone) | `9.19.0.56` | `9.21.1.3` |\n| [nvidia-cufft](https://developer.nvidia.com/cuda-zone) | `12.0.0.61` | `12.2.0.46` |\n| [nvidia-cufile](https://developer.nvidia.com/cuda-zone) | `1.15.1.6` | `1.17.1.22` |\n| [nvidia-cusolver](https://developer.nvidia.com/cuda-zone) | `12.0.4.66` | `12.2.0.1` |\n| [nvidia-cusparse](https://developer.nvidia.com/cuda-zone) | `12.6.3.3` | `12.7.10.1` |\n| [nvidia-cusparselt-cu13](https://developer.nvidia.com/cusparselt) | `0.8.0` | `0.9.1` |\n| [nvidia-nccl-cu13](https://developer.nvidia.com/cuda-zone) | `2.28.9` | `2.30.4` |\n| [nvidia-nvjitlink](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-nvshmem-cu13](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.6.5` |\n| [nvidia-nvtx](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [opentelemetry-exporter-prometheus](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [pathvalidate](https://github.com/thombashi/pathvalidate) | `3.2.1` | `3.3.1` |\n| [peft](https://github.com/huggingface/peft) | `0.18.1` | `0.19.1` |\n| [perceptron](https://github.com/perceptron-ai-inc/perceptron) | `0.1.4` | `0.2.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.9.6` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.29.0` | `1.40.1` |\n| [pooch](https://github.com/fatiando/pooch) | `1.8.2` | `1.9.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.2.0` | `0.4.1` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.27.2` |\n| [pycryptodomex](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.1` | `2.46.3` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.10.5` | `2.11.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.0` | `3.3.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [pytest-subtests](https://github.com/pytest-dev/pytest-subtests) | `0.14.1` | `0.15.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) | `1.20` | `1.23` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.12.1` | `3.14.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.37.0` |\n| [responses](https://github.com/getsentry/responses) | `0.25.3` | `0.26.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.1` | `0.30.0` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.3` | `0.17.0` |\n| [sacrebleu](https://github.com/mjpost/sacrebleu) | `2.4.3` | `2.6.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.4.5` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.13.1` | `1.15.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.0` | `5.4.1` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.6.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tabulate](https://github.com/astanin/python-tabulate) | `0.9.0` | `0.10.0` |\n| [tblib](https://github.com/ionelmc/python-tblib) | `3.1.0` | `3.2.2` |\n| [tensorizer](https://github.com/coreweave/tensorizer) | `2.10.1` | `2.12.1` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.1` |\n| [tritonclient](https://github.com/triton-inference-server/client) | `2.64.0` | `2.68.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.6.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.46.0` |\n| [vector-quantize-pytorch](https://github.com/lucidrains/vector-quantizer-pytorch) | `1.21.2` | `1.28.2` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.7.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.7.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [conch-triton-kernels](https://github.com/stackav-oss/conch) | `1.2.1` | `1.3` |\n\n\nUpdates `regex` from 2026.2.28 to 2026.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.4.4\"\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.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\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\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.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\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\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `transformers` from 5.5.3 to 5.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/transformers/releases\"\u003etransformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease v5.7.0\u003c/h1\u003e\n\u003ch2\u003eNew Model additions\u003c/h2\u003e\n\u003ch3\u003eLaguna\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eLaguna is Poolside's mixture-of-experts language model family that extends standard SwiGLU MoE transformers with two key innovations. It features per-layer head counts allowing different decoder layers to have different query-head counts while sharing the same KV cache shape, and implements a sigmoid MoE router with auxiliary-loss-free load balancing that uses element-wise sigmoid of gate logits plus learned per-expert bias for router scoring.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/laguna\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLaguna XS.2 implementation (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45673\"\u003e#45673\u003c/a\u003e) by \u003ca href=\"https://github.com/joerowell\"\u003e\u003ccode\u003e@​joerowell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45673\"\u003e#45673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDEIMv2\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eDEIMv2 (DETR with Improved Matching v2) is a real-time object detection model that extends DEIM with DINOv3 features and spans eight model sizes from X to Atto for diverse deployment scenarios. It uses a Spatial Tuning Adapter (STA) for larger variants to convert DINOv3's single-scale output into multi-scale features, while ultra-lightweight models employ pruned HGNetv2 backbones. The unified design achieves superior performance-cost trade-offs, with DEIMv2-X reaching 57.8 AP with only 50.3M parameters and DEIMv2-S being the first sub-10M model to exceed 50 AP on COCO.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/deimv2\"\u003eDocumentation\u003c/a\u003e | \u003ca href=\"https://huggingface.co/papers/2509.20787\"\u003ePaper\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003emodel: Add DEIMv2 to Transformers (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44339\"\u003e#44339\u003c/a\u003e) by \u003ca href=\"https://github.com/harshaljanjani\"\u003e\u003ccode\u003e@​harshaljanjani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/44339\"\u003e#44339\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAttention\u003c/h2\u003e\n\u003cp\u003eSeveral attention-related bugs were fixed across multiple models, including a cross-attention cache type error in T5Gemma2 for long inputs, incorrect cached forward behavior in Qwen3.5's gated-delta-net linear attention, and a crash in GraniteMoeHybrid when no Mamba layers are present. Attention function dispatch was also updated to align with the latest model implementations.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix cross-attention cache layer type for T5Gemma2 long inputs (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45540\"\u003e#45540\u003c/a\u003e) by \u003ca href=\"https://github.com/Beichen-Ma\"\u003e\u003ccode\u003e@​Beichen-Ma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45540\"\u003e#45540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Qwen3.5] Fix GDN linear attention multi-token cached forward (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45513\"\u003e#45513\u003c/a\u003e) by \u003ca href=\"https://github.com/kashif\"\u003e\u003ccode\u003e@​kashif\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45513\"\u003e#45513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GraniteMoeHybrid _update_mamba_mask crash on attention-only models (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45514\"\u003e#45514\u003c/a\u003e) by \u003ca href=\"https://github.com/tianhaocui\"\u003e\u003ccode\u003e@​tianhaocui\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45514\"\u003e#45514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlign latest model attention function dispatch (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45598\"\u003e#45598\u003c/a\u003e) by \u003ca href=\"https://github.com/Cyrilvallez\"\u003e\u003ccode\u003e@​Cyrilvallez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45598\"\u003e#45598\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTokenizers\u003c/h2\u003e\n\u003cp\u003eThere was a bug in AutoTokenizer that caused the wrong tokenizer class to be initialized. This caused regressions in models like DeepSeek R1.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003echange got reverted (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45680\"\u003e#45680\u003c/a\u003e) by \u003ca href=\"https://github.com/itazap\"\u003e\u003ccode\u003e@​itazap\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45680\"\u003e#45680\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneration\u003c/h2\u003e\n\u003cp\u003eContinuous batching generation received several fixes and improvements, including correcting KV deduplication and memory estimation for long sequences (16K+), and removing misleading warnings about \u003ccode\u003enum_return_sequences\u003c/code\u003e and other unsupported features that were incorrectly firing even when functionality worked correctly. Documentation for per-request sampling parameters was also added.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003egenerate: drop stale num_return_sequences warning on continuous batching path (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45582\"\u003e#45582\u003c/a\u003e) by \u003ca href=\"https://github.com/joaquinhuigomez\"\u003e\u003ccode\u003e@​joaquinhuigomez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45582\"\u003e#45582\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/huggingface/transformers/commit/6ffbb07f93d9e44457450d1150136309b0dc966b\"\u003e\u003ccode\u003e6ffbb07\u003c/code\u003e\u003c/a\u003e v5.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/18e7fd752e6fa7dd4ff8b828ff8f3aec5b0882ae\"\u003e\u003ccode\u003e18e7fd7\u003c/code\u003e\u003c/a\u003e change got reverted (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45680\"\u003e#45680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/2dff8f76f48abd7dd31b8dc156046509887d3cf1\"\u003e\u003ccode\u003e2dff8f7\u003c/code\u003e\u003c/a\u003e v5.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/93bed93e7518444cce442a89c78008fa0a21c963\"\u003e\u003ccode\u003e93bed93\u003c/code\u003e\u003c/a\u003e fixing more typos (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45689\"\u003e#45689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/a29e9675a864e2c7854a4d0f574589a8db1dac2e\"\u003e\u003ccode\u003ea29e967\u003c/code\u003e\u003c/a\u003e [docs] cb memory management (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45587\"\u003e#45587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/2d01799735d455f745b9c53d5a9d2eebdd7be569\"\u003e\u003ccode\u003e2d01799\u003c/code\u003e\u003c/a\u003e [docs] cpu offloading (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45660\"\u003e#45660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/4aba7167e328965caadcdfc6834b982037889f86\"\u003e\u003ccode\u003e4aba716\u003c/code\u003e\u003c/a\u003e docs(README_zh-hans): clarify conditions for not using Transformers (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45688\"\u003e#45688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/f4fc6d013864f5389b6518787438cf55359613d1\"\u003e\u003ccode\u003ef4fc6d0\u003c/code\u003e\u003c/a\u003e fix padding side issue for fast_vlm tests (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45592\"\u003e#45592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/5d7ff4393ab99aa7cadf4cccd1f814dbb799f2bb\"\u003e\u003ccode\u003e5d7ff43\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ex_clip\u003c/code\u003e: 8 failed test cases (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45394\"\u003e#45394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/aadc005711da266af1f75c33185172af9d9f19bf\"\u003e\u003ccode\u003eaadc005\u003c/code\u003e\u003c/a\u003e zero_shot_object_detection ValueError fix for python 3.13 (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45669\"\u003e#45669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/transformers/compare/v5.5.3...v5.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.2 to 0.23.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.23.1\u003c/h2\u003e\n\u003ch2\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003etokenizers 0.23.1\u003c/code\u003e is the first proper stable release in the \u003ccode\u003e0.23\u003c/code\u003e line — \u003ccode\u003e0.23.0\u003c/code\u003e only ever shipped as \u003ccode\u003erc0\u003c/code\u003e because the release pipeline itself was broken (Node side hadn't shipped multi-platform binaries since 2023, Python side was on \u003ccode\u003epyo3 0.27\u003c/code\u003e without free-threaded support). \u003ccode\u003e0.23.1\u003c/code\u003e is the version where everything actually goes out the door together: full Node multi-platform wheels for the first time in years, Python 3.14 (regular \u003cstrong\u003eand\u003c/strong\u003e free-threaded \u003ccode\u003e3.14t\u003c/code\u003e), full type hints for every Python class, and a stack of measurable perf wins on the BPE / added-vocab hot paths.\u003c/p\u003e\n\u003cp\u003eThere is no functional \u003ccode\u003e0.23.0\u003c/code\u003e published — we tag \u003ccode\u003e0.23.1\u003c/code\u003e directly so users don't accidentally pull a never-shipped version.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🚨 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDrop Python 3.9\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1952\"\u003e#1952\u003c/a\u003e) — \u003ccode\u003erequires-python = \u0026quot;\u0026gt;=3.10\u0026quot;\u003c/code\u003e; 3.9 users stay on \u003ccode\u003e0.22.x\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eadd_tokens\u003c/code\u003e normalizes \u003ccode\u003econtent\u003c/code\u003e at insertion\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e) — re-saved \u003ccode\u003etokenizer.json\u003c/code\u003e may differ in the \u003ccode\u003eadded_tokens\u003c/code\u003e block. Existing files load unchanged.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eType stubs are precise\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1928\"\u003e#1928\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1997\"\u003e#1997\u003c/a\u003e) — methods that returned \u003ccode\u003eAny\u003c/code\u003e now return real types; \u003ccode\u003emypy --strict\u003c/code\u003e may surface previously-hidden errors. Stub layout also moved from \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;/__init__.pyi\u003c/code\u003e to \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;.pyi\u003c/code\u003e. This breaks the surface of some of the processors like \u003ccode\u003eRobertaProcessign\u003c/code\u003e's \u003ccode\u003e__init__\u003c/code\u003e .\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e3.14t-only\u003c/strong\u003e: setters/getters return \u003ccode\u003ePyResult\u0026lt;T\u0026gt;\u003c/code\u003e because of \u003ccode\u003eArc\u0026lt;RwLock\u0026lt;Tokenizer\u0026gt;\u0026gt;\u003c/code\u003e; a poisoned lock surfaces as \u003ccode\u003ePyException\u003c/code\u003e instead of a panic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e⚡ Performance — measured locally on this Mac, not lifted from PRs\u003c/h2\u003e\n\u003cp\u003eRun with \u003ccode\u003ecargo bench --bench \u0026lt;name\u0026gt; -- --save-baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.22.2\u003c/code\u003e, then \u003ccode\u003e--baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.23.1\u003c/code\u003e. Numbers are point-in-time wall clock on a single laptop; relative deltas are what matters, absolute numbers will differ on CI hardware.\u003c/p\u003e\n\u003ch3\u003eAdded-vocabulary deserialize — the headline win (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003ebench: improve added_vocab_deserialize to reflect real-world workloads\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2000\"\u003e#2000\u003c/a\u003e) is now representative of how transformers actually loads tokenizer.json files. The combined effect of \u003ccode\u003edaachorse\u003c/code\u003e for the matching automaton plus the normalize-on-insert refactor is enormous on this workload:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~410 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e248 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.1 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e273 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~395 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e235 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.4 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e290 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e400k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~15 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e980 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−94%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eReal-world impact: loading a Llama-3-style tokenizer with a large set of added tokens dropped from \u0026quot;noticeable pause\u0026quot; to \u0026quot;instant\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eBPE encode\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch, no cache\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e530 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e446 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−16%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch\u003c/code\u003e (cached)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e690 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e685 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode\u003c/code\u003e (single)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.95 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.94 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (small)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e32.6 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e31.5 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−3%\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (big)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.01 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e988 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−2%\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe BPE per-thread cache PR (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e) shows much larger wins on highly-parallel workloads (+47–62% at 88+ threads on a server box, per the PR's own measurements on Vera). Single-thread batch numbers above are flat or slightly improved because cache-hit overhead was already low without contention.\u003c/p\u003e\n\u003ch3\u003eLlama-3 encode\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/huggingface/tokenizers/commit/7f1623b90b5adfb9bc327d4c3468d2f70bbce262\"\u003e\u003ccode\u003e7f1623b\u003c/code\u003e\u003c/a\u003e Bump version to 0.23.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bbe43ad73d8fc8932b9d0e657ddee3cd70c649a4\"\u003e\u003ccode\u003ebbe43ad\u003c/code\u003e\u003c/a\u003e ci: release workflow fixes (node + python) (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2043\"\u003e#2043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ab0c5d8fc13eb1c5001d9c06806635e2b5a42e9f\"\u003e\u003ccode\u003eab0c5d8\u003c/code\u003e\u003c/a\u003e Fix node release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2034\"\u003e#2034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/decd8e07dad15f296c0adc2bc3a560f62d3de2eb\"\u003e\u003ccode\u003edecd8e0\u003c/code\u003e\u003c/a\u003e bindings/python: free-threaded Python (3.14t) support (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2041\"\u003e#2041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/3992692d483bf3177219b52cb101b1bb055c18e6\"\u003e\u003ccode\u003e3992692\u003c/code\u003e\u003c/a\u003e update for release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2033\"\u003e#2033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bcdd25b97fcd78549903082ecf3ddd87d42c456b\"\u003e\u003ccode\u003ebcdd25b\u003c/code\u003e\u003c/a\u003e BPE cache: per-thread read-through cache to avoid RwLock atomics on hits (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/618eb383f43e207139eb5cdb9bca17796b5e9bd7\"\u003e\u003ccode\u003e618eb38\u003c/code\u003e\u003c/a\u003e Bump follow-redirects in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b6b1688bef2e87efc91af18edf7ac38b4d2dfbe6\"\u003e\u003ccode\u003eb6b1688\u003c/code\u003e\u003c/a\u003e chore: bump doc-builder SHA for PR upload workflow (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2025\"\u003e#2025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/19015d6b44aa3896626de5092e4171aed1b56d5b\"\u003e\u003ccode\u003e19015d6\u003c/code\u003e\u003c/a\u003e fix: use uvx --with cairosvg instead of uv pip install --system (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/efbcc68e321c364c8f9541f1c93a158df54d7da4\"\u003e\u003ccode\u003eefbcc68\u003c/code\u003e\u003c/a\u003e Ci benchmarks (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2019\"\u003e#2019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.2...v0.23.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\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/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.0 to 2.13.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd zizmor for GitHub Actions workflow linting by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13039\"\u003e#13039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jiter to v0.14.0 to fix a segmentation fault on musl Linux by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13064\"\u003e#13064\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow default factories of private attributes to take validated model data by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13013\"\u003e#13013\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\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/pydantic/pydantic/commit/9e9a11132c980c4ec84ff6d2df06d4c1a55ca8f3\"\u003e\u003ccode\u003e9e9a111\u003c/code\u003e\u003c/a\u003e Fix backported test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1ec8c6aa0cae1c78409c6f31af738a24e16c7124\"\u003e\u003ccode\u003e1ec8c6a\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fb4f2044436e9fa4ff9745479ce263016a99c4d6\"\u003e\u003ccode\u003efb4f204\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ca3ddd1149bd3b14273922a29da174804496a055\"\u003e\u003ccode\u003eca3ddd1\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/000e823a3ab7545b0c6064fde34effdcd02044ab\"\u003e\u003ccode\u003e000e823\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d45d8be3ffb6dfc6d0c64da6980140c91ff841fb\"\u003e\u003ccode\u003ed45d8be\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/54aca609ce58e73dfe1c681d93432fbe3a4621da\"\u003e\u003ccode\u003e54aca60\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/46bf4fa648af3a1fbf4603a37f210e9d9c618357\"\u003e\u003ccode\u003e46bf4fa\u003c/code\u003e\u003c/a\u003e Fix Pydantic release workflow (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13067\"\u003e#13067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1b359edab09c623464d23c6fd2503ae5ff276d43\"\u003e\u003ccode\u003e1b359ed\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13065\"\u003e#13065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b1bf19445d8ac144a7a0e82674d2d87eebab6c18\"\u003e\u003ccode\u003eb1bf194\u003c/code\u003e\u003c/a\u003e Fix model equality when using runtime \u003ccode\u003eextra\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13062\"\u003e#13062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.0...v2.13.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\u003c/a\u003e\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/prometheus/client_python/commit/2cd1738fb880fd0e6aa9a02ec48585128388a6cd\"\u003e\u003ccode\u003e2cd1738\u003c/code\u003e\u003c/a\u003e Release 0.25.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/daa1626eaf705318013b708954499b0a049088c8\"\u003e\u003ccode\u003edaa1626\u003c/code\u003e\u003c/a\u003e docs: add API reference for all metric types  (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1159\"\u003e#1159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/8673912276bdca7ddbca5d163eb11422b546bffb\"\u003e\u003ccode\u003e8673912\u003c/code\u003e\u003c/a\u003e Support MultiProcessCollector in RestrictedRegistry. (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1150\"\u003e#1150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/671f75c6f1f04838995fadd57cda21beee01838b\"\u003e\u003ccode\u003e671f75c\u003c/code\u003e\u003c/a\u003e Fix spaces in grouping key values for push_to_gateway (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1156\"\u003e#1156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/1cf53feae63b6ecb0bd76eee80582a0fba957e09\"\u003e\u003ccode\u003e1cf53fe\u003c/code\u003e\u003c/a\u003e Fix server shutdown documentation (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/a8541354519d04852d24688845f1d2d495eef59c\"\u003e\u003ccode\u003ea854135\u003c/code\u003e\u003c/a\u003e Migrate to Github Actions (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1153\"\u003e#1153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/f417f6ea8f058165a1934e368fed245e91aafc14\"\u003e\u003ccode\u003ef417f6e\u003c/code\u003e\u003c/a\u003e Release 0.24.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/6f0e967c1f7a408b75861d6833a8d303874be95d\"\u003e\u003ccode\u003e6f0e967\u003c/code\u003e\u003c/a\u003e Pass correct registry to MultiProcessCollector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/c5024d310fbfcba45a5e9db62e337a3a7930ea16\"\u003e\u003ccode\u003ec5024d3\u003c/code\u003e\u003c/a\u003e Release 0.24.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e1cdc203b1cf5f15c7b9a64d79fccc7907a62ca3\"\u003e\u003ccode\u003ee1cdc20\u003c/code\u003e\u003c/a\u003e Add Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1143\"\u003e#1143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/vllm-project/vllm/pull/41606","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vllm-project%2Fvllm/issues/41606","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41606/packages"},{"uuid":"4311958501","node_id":"PR_kwDOJzO_rs7UxaGi","number":57,"state":"closed","title":"Bump iniconfig from 2.0.0 to 2.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-23T21:58:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-22T21:28:45.000Z","updated_at":"2026-04-23T21:58:53.000Z","time_to_close":88206,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.0.0 to 2.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/26\"\u003e#26\u003c/a\u003e - list individuals in license file by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/52\"\u003epytest-dev/iniconfig#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun tests in CI by \u003ca href=\"https://github.com/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epypa/gh-action-pypi-publish@release/v1\u003c/code\u003e @ GHA by \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12-3.13 and drop EOL 3.7 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/56\"\u003epytest-dev/iniconfig#56\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/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix artifact building - pin minimal version of hatch\u003c/li\u003e\n\u003cli\u003edrop eol python 3.8\u003c/li\u003e\n\u003cli\u003eadd python 3.12 and 3.13\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/iniconfig/commit/34793a6417e35e511d0c17ffdd8a02ade0f9568e\"\u003e\u003ccode\u003e34793a6\u003c/code\u003e\u003c/a\u003e pre-commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/136435d0a4345bb048dca98e7c2f4e938d74521b\"\u003e\u003ccode\u003e136435d\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/0bb99ad0f7a6b21d5eb24214a260132317a11e43\"\u003e\u003ccode\u003e0bb99ad\u003c/code\u003e\u003c/a\u003e fix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/62\"\u003e#62\u003c/a\u003e: require a minimal hatch version with correct metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/16793eaddac67de0b8d621ae4e42e05b927e8d67\"\u003e\u003ccode\u003e16793ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/56\"\u003e#56\u003c/a\u003e from hugovk/add-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3dc2b2d6bf03e4b7cc92949a8ef0983fdd7ee442\"\u003e\u003ccode\u003e3dc2b2d\u003c/code\u003e\u003c/a\u003e Add support for Python 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/2eb8abfd9d3843100d7f138efe5bcd989a885024\"\u003e\u003ccode\u003e2eb8abf\u003c/code\u003e\u003c/a\u003e Bump GitHub Actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8c4bb5bf57dde613c8cdcf0e02a09b2fff630907\"\u003e\u003ccode\u003e8c4bb5b\u003c/code\u003e\u003c/a\u003e Set python-version for pre-commit to remove CI warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58b22b2d672564ff1925df51f4a8e07486765ed2\"\u003e\u003ccode\u003e58b22b2\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/4a53042252a109bcdd64422058de91c5dffff763\"\u003e\u003ccode\u003e4a53042\u003c/code\u003e\u003c/a\u003e Add support for Python 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/9cae43103df70bac6fde7b9f35ad11a9f1be0cb4\"\u003e\u003ccode\u003e9cae431\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/54\"\u003e#54\u003c/a\u003e from webknjaz/patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.0.0\u0026new-version=2.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/k9securityio/cedar-py/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/k9securityio%2Fcedar-py/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"},{"uuid":"4031591220","node_id":"PR_kwDOQvL0Ps7IXhyk","number":237,"state":"closed","title":"chore(deps): bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-09T22:44:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-06T01:16:37.000Z","updated_at":"2026-03-09T22:44:23.000Z","time_to_close":336458,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":null}],"path":null,"ecosystem":"pip"},"body":"\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/julesjewels-ai/jules-idea-automation/pull/237","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/julesjewels-ai%2Fjules-idea-automation/issues/237","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/237/packages"},{"uuid":"4030141104","node_id":"PR_kwDOOP_yhs7ITOfU","number":561,"state":"open","title":"chore(deps): bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-05T19:25:36.000Z","updated_at":"2026-03-05T21:42:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/italofelipe/auraxis-api/pull/561","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/italofelipe%2Fauraxis-api/issues/561","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/561/packages"},{"uuid":"4012883749","node_id":"PR_kwDOPrR8PM7HalTE","number":1521,"state":"open","title":"deps(python)(deps): bump the python-dependencies group across 1 directory with 150 updates","user":"dependabot[bot]","labels":["dependencies","python","priority: high","security"],"assignees":["GrayGhostDev"],"locked":false,"comments_count":11,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-02T19:22:44.000Z","updated_at":"2026-03-02T19:25:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps): bump","group_name":"python-dependencies","update_count":150,"packages":[{"name":"aiodns","old_version":"3.2.0","new_version":"3.6.1","repository_url":"https://github.com/saghul/aiodns"},{"name":"aiohttp-retry","old_version":"2.8.3","new_version":"2.9.1","repository_url":"https://github.com/inyutin/aiohttp_retry"},{"name":"anthropic","old_version":"0.75.0","new_version":"0.84.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"apispec","old_version":"6.7.1","new_version":"6.9.0","repository_url":"https://github.com/marshmallow-code/apispec"},{"name":"apispec-webframeworks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/marshmallow-code/apispec-webframeworks"},{"name":"asgiref","old_version":"3.9.2","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"authlib","old_version":"1.6.5","new_version":"1.6.9","repository_url":"https://github.com/authlib/authlib"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"basedpyright","old_version":"1.36.2","new_version":"1.38.2","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"cachetools","old_version":"5.5.0","new_version":"5.5.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.1","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.127.0","new_version":"0.135.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.20.1","new_version":"3.25.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"googleapis-common-protos","old_version":"1.59.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"hvac","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jiter","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"langchain","old_version":"1.2.2","new_version":"1.2.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.3.0","new_version":"1.3.4","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.2.6","new_version":"1.2.16","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.7","new_version":"1.1.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-text-splitters","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.0.5","new_version":"1.0.10","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.1","new_version":"0.3.9","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.6.1","new_version":"0.7.9","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"lxml","old_version":"6.0.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown","old_version":"3.7","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.4","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nltk","old_version":"3.9.2","new_version":"3.9.3","repository_url":"https://github.com/nltk/nltk"},{"name":"nodejs-wheel-binaries","old_version":"24.12.0","new_version":"24.14.0","repository_url":"https://github.com/njzjz/nodejs-wheel"},{"name":"opentelemetry-api","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.3","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"ormsgpack","old_version":"1.12.1","new_version":"1.12.2","repository_url":"https://github.com/ormsgpack/ormsgpack"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"phonenumbers","old_version":"8.13.50","new_version":"8.13.55","repository_url":"https://github.com/daviddrysdale/python-phonenumbers"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"playwright","old_version":"1.57.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"postgrest","old_version":"0.18.0","new_version":"0.19.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"prometheus-fastapi-instrumentator","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/trallnag/prometheus-fastapi-instrumentator"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.3.2","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psutil","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pusher","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pusher/pusher-http-python"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycares","old_version":"5.0.0","new_version":"5.0.1","repository_url":"https://github.com/saghul/pycares"},{"name":"pydantic","old_version":"2.9.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.23.4","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.1","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.1","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"realtime","old_version":"2.5.3","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.9.11","new_version":"2024.11.6","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.14","new_version":"0.2.15"},{"name":"ruff","old_version":"0.14.10","new_version":"0.15.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"safety-schemas","old_version":"0.0.16","new_version":"0.0.18","repository_url":"https://github.com/pyupio/safety_schemas"},{"name":"sendgrid","old_version":"6.11.0","new_version":"6.12.5","repository_url":"https://github.com/sendgrid/sendgrid-python"},{"name":"sentry-sdk","old_version":"2.19.2","new_version":"2.54.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.45","new_version":"2.0.48","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"storage3","old_version":"0.9.0","new_version":"0.12.2","repository_url":"https://github.com/supabase/supabase-py"},{"name":"stripe","old_version":"8.0.0","new_version":"8.11.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"supabase","old_version":"2.10.0","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supafunc","old_version":"0.7.0","new_version":"0.10.2","repository_url":"https://github.com/supabase/functions-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tomli","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.19.2","new_version":"0.24.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uuid-utils","old_version":"0.12.0","new_version":"0.14.1","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.41.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"yarl","old_version":"1.17.1","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"mkdocs-material","old_version":"9.7.1","new_version":"9.7.3","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"backrefs","old_version":"6.1","new_version":"6.2","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"pylint","old_version":"3.3.2","new_version":"3.3.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest-html","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/pytest-dev/pytest-html"},{"name":"faker","old_version":"33.1.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"responses","old_version":"0.25.8","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"ipython","old_version":"8.18.1","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 150 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiodns](https://github.com/saghul/aiodns) | `3.2.0` | `3.6.1` |\n| [aiohttp-retry](https://github.com/inyutin/aiohttp_retry) | `2.8.3` | `2.9.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.75.0` | `0.84.0` |\n| [apispec](https://github.com/marshmallow-code/apispec) | `6.7.1` | `6.9.0` |\n| [apispec-webframeworks](https://github.com/marshmallow-code/apispec-webframeworks) | `1.1.0` | `1.2.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.9.2` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.5` | `1.6.9` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.36.2` | `1.38.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `5.5.2` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.1` | `7.13.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.127.0` | `0.135.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.1` | `3.25.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.61.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.59.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.0` | `3.3.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.78.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [hvac](https://github.com/hvac/hvac) | `2.1.0` | `2.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.13.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.2.2` | `1.2.10` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.3.0` | `1.3.4` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.2.6` | `1.2.16` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.7` | `1.1.10` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.0` | `1.1.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.10` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.8` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.1` | `0.3.9` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.6.1` | `0.7.9` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.0` | `6.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.4` | `6.7.1` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.2` | `3.9.3` |\n| [nodejs-wheel-binaries](https://github.com/njzjz/nodejs-wheel) | `24.12.0` | `24.14.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.42b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.3` | `3.11.7` |\n| [ormsgpack](https://github.com/ormsgpack/ormsgpack) | `1.12.1` | `1.12.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) | `8.13.50` | `8.13.55` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.2` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.57.0` | `1.58.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `0.18.0` | `0.19.3` |\n| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `7.0.0` | `7.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.4.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `6.1.1` |\n| [pusher](https://github.com/pusher/pusher-http-python) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycares](https://github.com/saghul/pycares) | `5.0.0` | `5.0.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.23.4` | `2.42.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.11.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.0` | `3.3.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.2` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `3.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.22` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.5.3` | `2.28.0` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.9.11` | `2024.11.6` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.14` | `0.2.15` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.10` | `0.15.4` |\n| [safety-schemas](https://github.com/pyupio/safety_schemas) | `0.0.16` | `0.0.18` |\n| [sendgrid](https://github.com/sendgrid/sendgrid-python) | `6.11.0` | `6.12.5` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.19.2` | `2.54.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.45` | `2.0.48` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [storage3](https://github.com/supabase/supabase-py) | `0.9.0` | `0.12.2` |\n| [stripe](https://github.com/stripe/stripe-python) | `8.0.0` | `8.11.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.10.0` | `2.28.0` |\n| [supafunc](https://github.com/supabase/functions-py) | `0.7.0` | `0.10.2` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.3.0` | `2.4.0` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.3` | `0.14.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [typer](https://github.com/fastapi/typer) | `0.19.2` | `0.24.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.15.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.14.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.41.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.6.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.4` | `3.1.6` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.23.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.1` | `9.7.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.0` | `1.5.1` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.1` | `6.2` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.2` | `3.3.9` |\n| [pytest-html](https://github.com/pytest-dev/pytest-html) | `4.1.1` | `4.2.0` |\n| [faker](https://github.com/joke2k/faker) | `33.1.0` | `33.3.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.8` | `0.26.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `8.38.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n\n\nUpdates `aiodns` from 3.2.0 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiodns/blob/master/ChangeLog\"\u003eaiodns's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.6.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePin pycares to \u0026lt; 5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.6.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ePrevents resolver from being garbage collected while queries are in progress\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSocket callback optimizations (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/172\"\u003e#172\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved performance for socket state handling\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed RTD links (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.9.0 to 4.11.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/186\"\u003e#186\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 1.0.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/181\"\u003e#181\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.2.1 to 7.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/193\"\u003e#193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.4.0 to 8.4.2 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/171\"\u003e#171\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/190\"\u003e#190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.16.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/170\"\u003e#170\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/179\"\u003e#179\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/195\"\u003e#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/197\"\u003e#197\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped uvloop from 0.21.0 to 0.22.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/202\"\u003e#202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped winloop from 0.1.8 to 0.3.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/182\"\u003e#182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/183\"\u003e#183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/184\"\u003e#184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/187\"\u003e#187\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/200\"\u003e#200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/201\"\u003e#201\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/checkout from 4 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/188\"\u003e#188\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded explicit close method (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/166\"\u003e#166\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eAllows proper cleanup of resources on demand\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed return type signature for CNAME and SOA records (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/162\"\u003e#162\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eCorrected type annotations for better type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImproved Windows event loop documentation (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/163\"\u003e#163\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eProvided more accurate information on supported event loops on Windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded pre-commit configuration with ruff (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/152\"\u003e#152\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved code quality and consistency\u003c/li\u003e\n\u003cli\u003eReformatted code and normalized end-of-line characters (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/155\"\u003e#155\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.8.0 to 4.9.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 0.26.0 to 1.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.1.1 to 6.2.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.3.5 to 8.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.15.0 to 1.16.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded fallback to \u003ccode\u003esock_state_cb\u003c/code\u003e if \u003ccode\u003eevent_thread\u003c/code\u003e creation fails (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/151\"\u003e#151\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved reliability on systems with exhausted inotify watches\u003c/li\u003e\n\u003cli\u003eImplemented transparent fallback mechanism to ensure DNS resolution continues to work\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImplemented strict typing (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/138\"\u003e#138\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/aio-libs/aiodns/commit/1067970f92bc386b8b04469e83287e140e39c562\"\u003e\u003ccode\u003e1067970\u003c/code\u003e\u003c/a\u003e Release 3.6.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/a85b558b71cf9464a4c876f57490224ee98e3829\"\u003e\u003ccode\u003ea85b558\u003c/code\u003e\u003c/a\u003e build: prevent incompatible pycares versions (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/6d63e75848ec975c51667c6c3fd115f27199716f\"\u003e\u003ccode\u003e6d63e75\u003c/code\u003e\u003c/a\u003e Bump winloop from 0.3.1 to 0.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/be007e21337ca638e4ee987d8a3c91ca31fd8211\"\u003e\u003ccode\u003ebe007e2\u003c/code\u003e\u003c/a\u003e Release 3.6.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/4cb8ab83bb21b7bbf152b9ca71baf2c74427fc9d\"\u003e\u003ccode\u003e4cb8ab8\u003c/code\u003e\u003c/a\u003e Fix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/e088cf48f6a30006e0545f8a4794210d3d99779f\"\u003e\u003ccode\u003ee088cf4\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/23dc7727637bedb972d91614ee73922ff84d4d1a\"\u003e\u003ccode\u003e23dc772\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/3a1bddf5dec8e79af7690d6caffec84746e096e4\"\u003e\u003ccode\u003e3a1bddf\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/b57721e1267c614f329eb36eb700ca2f1468446c\"\u003e\u003ccode\u003eb57721e\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/ac6803818ad533749bedc9e11b691da0fe4bbe85\"\u003e\u003ccode\u003eac68038\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/saghul/aiodns/compare/v3.2.0...v3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp-retry` from 2.8.3 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/inyutin/aiohttp_retry/releases\"\u003eaiohttp-retry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests init file by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/106\"\u003einyutin/aiohttp_retry#106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the client sometimes would not retry by \u003ca href=\"https://github.com/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\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/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRetry based on HTTP methods by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/103\"\u003einyutin/aiohttp_retry#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: _RequestContext._do_request() by \u003ca href=\"https://github.com/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ruff by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/99\"\u003einyutin/aiohttp_retry#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code-coverage by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/100\"\u003einyutin/aiohttp_retry#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python packages up to 3.13 by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/101\"\u003einyutin/aiohttp_retry#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo detected by codespell + add codespell workflow to avoid typos sneaking in by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove documentation a little bit by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/102\"\u003einyutin/aiohttp_retry#102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ci dependencies by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/104\"\u003einyutin/aiohttp_retry#104\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/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.0\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.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/inyutin/aiohttp_retry/commit/39b23915023dde0e0298b822de3d23960a5024e6\"\u003e\u003ccode\u003e39b2391\u003c/code\u003e\u003c/a\u003e Fix the client sometimes would not retry (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/4b406631f39963d7cda97086e89da6c740c56a6d\"\u003e\u003ccode\u003e4b40663\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/106\"\u003e#106\u003c/a\u003e from inyutin/tests-init-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5007c9a469e46198cab7f7a1f944166ae82d045f\"\u003e\u003ccode\u003e5007c9a\u003c/code\u003e\u003c/a\u003e Add tests init file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/75dbda9057f5cc7fe2d44ce6b60018381b84a08b\"\u003e\u003ccode\u003e75dbda9\u003c/code\u003e\u003c/a\u003e Add workflow_dispatch to publish package CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/f402cf6e0d59992945ae7833b903a8aef5a114b3\"\u003e\u003ccode\u003ef402cf6\u003c/code\u003e\u003c/a\u003e Package version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/1dca2d92da43cc011175f4cbef2c64d7f166d111\"\u003e\u003ccode\u003e1dca2d9\u003c/code\u003e\u003c/a\u003e publish CI update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5ea8c8eab3706617011b5ba7ff0a86cec5c4182a\"\u003e\u003ccode\u003e5ea8c8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/104\"\u003e#104\u003c/a\u003e from inyutin/dev-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/87c03ed64383710d05350ec0ce2110950fb327ab\"\u003e\u003ccode\u003e87c03ed\u003c/code\u003e\u003c/a\u003e Encode pytest asyncio setting in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/7af8295a7c99b1824c96f1a07f6cef1e1e64b4d7\"\u003e\u003ccode\u003e7af8295\u003c/code\u003e\u003c/a\u003e Update ci dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/723961d3c2e841da8232b2da92e354c70624310c\"\u003e\u003ccode\u003e723961d\u003c/code\u003e\u003c/a\u003e Retry based on HTTP methods (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.75.0 to 0.84.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.84.0\u003c/h2\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.83.0\u003c/h2\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.82.0\u003c/h2\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\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/anthropics/anthropic-sdk-python/commit/49d639a671cb0ac30c767e8e1e68fdd5925205d5\"\u003e\u003ccode\u003e49d639a\u003c/code\u003e\u003c/a\u003e release: 0.84.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4d73b2159f7f3e88113a904f785de58ec4157045\"\u003e\u003ccode\u003e4d73b21\u003c/code\u003e\u003c/a\u003e feat(helpers): add conversion helpers for MCP tools, prompts, and resources (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0e4092173fc52d773675f8e3a4ced6a5e2f67c9f\"\u003e\u003ccode\u003e0e40921\u003c/code\u003e\u003c/a\u003e docs: rebrand to Claude SDK and streamline README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c3017a227c67377b862644feb463c0d8a1e9ddc9\"\u003e\u003ccode\u003ec3017a2\u003c/code\u003e\u003c/a\u003e chore(internal): simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/470fda9c14714117342c0491d6e436d158bbb4ab\"\u003e\u003ccode\u003e470fda9\u003c/code\u003e\u003c/a\u003e chore(internal): make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c30c72d710dea90437a73713296e76c12518c359\"\u003e\u003ccode\u003ec30c72d\u003c/code\u003e\u003c/a\u003e chore: add missing raw jsonl results method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9d9a5a1aab3aa67c665c39bbeed3fec298fc2e6a\"\u003e\u003ccode\u003e9d9a5a1\u003c/code\u003e\u003c/a\u003e chore(internal):  make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c28d2d50a5f5197839c36fb4741bee8cd1e976c1\"\u003e\u003ccode\u003ec28d2d5\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/bb13f1ea6be3941342115fdb125e3fe225252071\"\u003e\u003ccode\u003ebb13f1e\u003c/code\u003e\u003c/a\u003e chore(internal): add request options to SSE classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ab0ccb990d098ef56c0367abcb0c745d7a58a99e\"\u003e\u003ccode\u003eab0ccb9\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.75.0...v0.84.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec` from 6.7.1 to 6.9.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec/blob/dev/CHANGELOG.rst\"\u003eapispec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.9.0 (2025-11-30)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eexamples\u003c/code\u003e property from field metadata (:pr:\u003ccode\u003e999\u003c/code\u003e).\nThanks :user:\u003ccode\u003eFlix6x\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 (:pr:\u003ccode\u003e998\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 (:pr:\u003ccode\u003e994\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.4 (2025-09-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eTimeDelta\u003c/code\u003e field type according to \u003ccode\u003eserialization_type\u003c/code\u003e (:pr:\u003ccode\u003e990\u003c/code\u003e).\nThanks :user:\u003ccode\u003eLewisHaley\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.3 (2025-09-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e if\n\u003ccode\u003eunknown\u003c/code\u003e is not set (:pr:\u003ccode\u003e988\u003c/code\u003e).\nThanks :user:\u003ccode\u003emwgamble\u003c/code\u003e for reporting.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e according to \u003ccode\u003eunknown\u003c/code\u003e\nvalue passed at schema instantiation, not only as \u003ccode\u003eMeta\u003c/code\u003e attribute\n(:pr:\u003ccode\u003e988\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.2 (2025-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e doesn't override \u003ccode\u003eadditionalProperties\u003c/code\u003e explicitly\npassed to \u003ccode\u003efields.Dict\u003c/code\u003e (:pr:\u003ccode\u003e976\u003c/code\u003e).\nThanks :user:\u003ccode\u003e0x0400\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerf improvement to \u003ccode\u003efilter_excluded_fields\u003c/code\u003e (:issue:\u003ccode\u003e972\u003c/code\u003e).\nThanks :user:\u003ccode\u003eallrob23\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.1 (2025-01-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\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/marshmallow-code/apispec/commit/58265d009f7cf027f22356a3fe9ea80813bcb36e\"\u003e\u003ccode\u003e58265d0\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/e25f2d4ab50855cfb9977dbbd167d1f67eae4f35\"\u003e\u003ccode\u003ee25f2d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/999\"\u003e#999\u003c/a\u003e from SeitaBV/feat/support-examples-property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/eab75c737746e46c9002f1d59b1fcd3c46f5855c\"\u003e\u003ccode\u003eeab75c7\u003c/code\u003e\u003c/a\u003e feat: add test of metadata examples field\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/3a620c64b7506374cf8094deb0d786ee221e95a9\"\u003e\u003ccode\u003e3a620c6\u003c/code\u003e\u003c/a\u003e chore: AUTHORS.rst entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/0349ca265eda89f8e633aa3b09b0a8348afb6d11\"\u003e\u003ccode\u003e0349ca2\u003c/code\u003e\u003c/a\u003e docs: thank myself (a bit presumptuous, don't I think)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/8f74aa5bed1d3e65d6917674d2475701df275a53\"\u003e\u003ccode\u003e8f74aa5\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/32f4f34a229674d274e17b50b57ffa4e9610df4c\"\u003e\u003ccode\u003e32f4f34\u003c/code\u003e\u003c/a\u003e docs: add changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/867ae3b93254e822af1a18e83ebb6761aa07511b\"\u003e\u003ccode\u003e867ae3b\u003c/code\u003e\u003c/a\u003e feat: 'examples' is a supported property in OpenAPI 3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/40210699852a926c13a8d351e280c4a41070fc27\"\u003e\u003ccode\u003e4021069\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/c10c481ee4300056e07c134272d13c44a3283f90\"\u003e\u003ccode\u003ec10c481\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/998\"\u003e#998\u003c/a\u003e from marshmallow-code/py314\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec/compare/6.7.1...6.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec-webframeworks` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/blob/main/CHANGELOG.rst\"\u003eapispec-webframeworks's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2024-09-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTornadoPlugin: Ensure consistent ordering for HTTP path keys\n(:pr:\u003ccode\u003e159\u003c/code\u003e). Thanks :user:\u003ccode\u003ebhperry\u003c/code\u003e for the PR.\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/marshmallow-code/apispec-webframeworks/commit/ebf43f149e685e3fe2abca2a1224b87e6c7415c1\"\u003e\u003ccode\u003eebf43f1\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/e26e46369626b225eb2776075e1ad116f18dc6b5\"\u003e\u003ccode\u003ee26e463\u003c/code\u003e\u003c/a\u003e Consistent ordering for HTTP path keys (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/abcb590d894572ab53865ad8f7d355f62c94cbf7\"\u003e\u003ccode\u003eabcb590\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/377fe6bd9aa8fc70d24dd65ef1d55016d8dd4fea\"\u003e\u003ccode\u003e377fe6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/bda9880a0d91692162ca87dcb30f35c404d9afbd\"\u003e\u003ccode\u003ebda9880\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/b5940fa3aa996eecce81dd536689aca3844c7580\"\u003e\u003ccode\u003eb5940fa\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/6c7f164bc58a9c647ecda3dd801bc75dab9f21d1\"\u003e\u003ccode\u003e6c7f164\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/154\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/7326a3f262caf41c3f64648cc231fdb9f6ac9d48\"\u003e\u003ccode\u003e7326a3f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/9da38826c861ea88f60f173e6f9bb212b522a22c\"\u003e\u003ccode\u003e9da3882\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/1db8ed966be0e710a14e6518a86f6ce72981504f\"\u003e\u003ccode\u003e1db8ed9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/compare/1.1.0...1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.9.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\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/django/asgiref/commit/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/asgiref/compare/3.9.2...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `authlib` from 1.6.5 to 1.6.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.9\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.8...v1.6.9\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.8...v1.6.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eChanges in \u003ccode\u003ejose\u003c/code\u003e module\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNot using header's \u003ccode\u003ejwk\u003c/code\u003e automatically\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eES256K\u003c/code\u003e into default jwt algorithms\u003c/li\u003e\n\u003cli\u003eRemove deprecated algorithm from default registry\u003c/li\u003e\n\u003cli\u003eGenerate random \u003ccode\u003ecek\u003c/code\u003e when \u003ccode\u003ecek\u003c/code\u003e length doesn't match\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.8\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eEdDSA\u003c/code\u003e to default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSet supported algorithms for the default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/p\u003e\n\u003ch2\u003ev1.6.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(ClientAuth): fix incorrect signature when Content-Type is x-www-form-urlencoded by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable by \u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter. by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/844\"\u003eauthlib/authlib#844\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/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\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/authlib/authlib/blob/main/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e.. meta::\n:description: The full list of changes between each Authlib release.\u003c/p\u003e\n\u003cp\u003eHere you can see the full list of changes between each Authlib release.\u003c/p\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eUnreleased\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eOpenID Connect RP-Initiated Logout 1.0 \u0026lt;https://openid.net/specs/openid-connect-rpinitiated-1_0.html\u0026gt;\u003c/code\u003e_.\nSee :ref:\u003ccode\u003especs/rpinitiated\u003c/code\u003e for details. :issue:\u003ccode\u003e500\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePer RFC 6749 Section 3.3, the \u003ccode\u003escope\u003c/code\u003e parameter is now optional at both\nauthorization and token endpoints. \u003ccode\u003eclient.get_allowed_scope()\u003c/code\u003e is called\nto determine the default scope when omitted. :issue:\u003ccode\u003e845\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9, start support Python 3.14. :pr:\u003ccode\u003e850\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eAuthorizationServerMetadata.validate()\u003c/code\u003e to compose with RFC extension classes.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at=0\u003c/code\u003e being incorrectly treated as \u003ccode\u003eNone\u003c/code\u003e. :issue:\u003ccode\u003e530\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eResourceProtector\u003c/code\u003e decorator to be used without parentheses. :issue:\u003ccode\u003e604\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImplement RFC9700 PKCE downgrade countermeasure.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUpgrade Guide: :ref:\u003ccode\u003ejoserfc_upgrade\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 1.6.6\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Dec 12, 2025\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter, :pr:\u003ccode\u003e844\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix incorrect signature when \u003ccode\u003eContent-Type\u003c/code\u003e is x-www-form-urlencoded for OAuth 1.0 Client, :pr:\u003ccode\u003e778\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eexpires_in\u003c/code\u003e in \u003ccode\u003eOAuth2Token\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable, :pr:\u003ccode\u003e842\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAlways track \u003ccode\u003estate\u003c/code\u003e in session for OAuth client integrations.\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/authlib/authlib/commit/9266eaa2227ad7e21dc731b2a4a01909aabd934b\"\u003e\u003ccode\u003e9266eaa\u003c/code\u003e\u003c/a\u003e chore: release 1.6.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b9bb2b25bf8b7e01512d847a95c1749646eaa72b\"\u003e\u003ccode\u003eb9bb2b2\u003c/code\u003e\u003c/a\u003e fix(oidc): fail close at validating c_hash and at_hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/1b0a1d988842bff7347c4ec0a70e45c3ba55504e\"\u003e\u003ccode\u003e1b0a1d9\u003c/code\u003e\u003c/a\u003e fix(jose): generate random cek when cek length doesn't match\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5be3c518794b7322375bae2bf1871713d9b5c2fb\"\u003e\u003ccode\u003e5be3c51\u003c/code\u003e\u003c/a\u003e fix(jose): add ES256K into default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/48b345f29f6c459f11c6a40162b6c0b742ef2e22\"\u003e\u003ccode\u003e48b345f\u003c/code\u003e\u003c/a\u003e fix(jose): remove deprecated algorithm from default registry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a5d4b2d4c9e46bfa11c82f85fdc2bcc0b50ae681\"\u003e\u003ccode\u003ea5d4b2d\u003c/code\u003e\u003c/a\u003e fix(jose): do not use header's jwk automatically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a769f343ae8d43236448e3e74445980861812e82\"\u003e\u003ccode\u003ea769f34\u003c/code\u003e\u003c/a\u003e chore: release 1.6.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/84f3fa2965a189c16528329e8cfe41d094008588\"\u003e\u003ccode\u003e84f3fa2\u003c/code\u003e\u003c/a\u003e fix: add EdDSA to default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/38e872a3f5b97d2658507acc8762a4e18adaa50e\"\u003e\u003ccode\u003e38e872a\u003c/code\u003e\u003c/a\u003e chore: release 1.6.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b87c32ed07b8ae7f805873e1c9cafd1016761df7\"\u003e\u003ccode\u003eb87c32e\u003c/code\u003e\u003c/a\u003e fix: remove \u0026quot;none\u0026quot; algorithm from default jwt instance\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.36.2 to 1.38.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/264b2472bf3c09522851bf7c7fa7d1c88bea044f\"\u003e\u003ccode\u003e264b247\u003c/code\u003e\u003c/a\u003e 1.38.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/e57065d9ef83e65f5f0f63f097ee2798d370b021\"\u003e\u003ccode\u003ee57065d\u003c/code\u003e\u003c/a\u003e Extract some duplicated test helpers and improve the \u003cstrong\u003ecall\u003c/strong\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/...\n\n_Description has been truncated_","html_url":"https://github.com/GrayGhostDev/ToolboxAI-Solutions/pull/1521","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrayGhostDev%2FToolboxAI-Solutions/issues/1521","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1521/packages"},{"uuid":"4007288546","node_id":"PR_kwDOFhigTs7HIY01","number":494,"state":"closed","title":"Bump the core-scripts group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-10T18:28:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T14:07:17.000Z","updated_at":"2026-03-10T18:28:15.000Z","time_to_close":793256,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"core-scripts","update_count":21,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"certifi","old_version":"2025.8.3","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"chardet","old_version":"5.2.0","new_version":"6.0.0.post1","repository_url":"https://github.com/chardet/chardet"},{"name":"environs","old_version":"14.3.0","new_version":"14.6.0","repository_url":"https://github.com/sloria/environs"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parse","old_version":"1.20.2","new_version":"1.21.1","repository_url":"https://github.com/r1chardj0n3s/parse"},{"name":"parse-type","old_version":"0.6.4","new_version":"0.6.6","repository_url":"https://github.com/jenisys/parse_type"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pygithub","old_version":"2.7.0","new_version":"2.8.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"responses","old_version":"0.25.7","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"behave","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/behave/behave"}],"path":null,"ecosystem":"pip"},"body":"Bumps the core-scripts group with 21 updates in the /scripts directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.8.3` | `2026.2.25` |\n| [chardet](https://github.com/chardet/chardet) | `5.2.0` | `6.0.0.post1` |\n| [environs](https://github.com/sloria/environs) | `14.3.0` | `14.6.0` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parse](https://github.com/r1chardj0n3s/parse) | `1.20.2` | `1.21.1` |\n| [parse-type](https://github.com/jenisys/parse_type) | `0.6.4` | `0.6.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.7.0` | `2.8.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.26.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [behave](https://github.com/behave/behave) | `1.3.0` | `1.3.3` |\n\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.8.3 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/2025.08.03...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.2.0 to 6.0.0.post1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.0.post1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed version number in chardet/version.py still being set to \u003ccode\u003e6.0.0dev0\u003c/code\u003e. Otherwise identical to \u003ca href=\"https://github.com/chardet/chardet/releases/6.0.0\"\u003e6.0.0\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eUnified single-byte charset detection\u003c/strong\u003e: Instead of only having trained language models for a handful of languages (Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, Turkish) and relying on special-case \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e heuristics for Western encodings, chardet now treats all single-byte charsets the same way: every encoding gets proper language-specific bigram models trained on CulturaX corpus data. This means chardet can now accurately detect both the encoding \u003cem\u003eand\u003c/em\u003e the language for all supported single-byte encodings.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e38 new languages\u003c/strong\u003e: Arabic, Belarusian, Breton, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Farsi, Finnish, French, German, Icelandic, Indonesian, Irish, Italian, Kazakh, Latvian, Lithuanian, Macedonian, Malay, Maltese, Norwegian, Polish, Portuguese, Romanian, Scottish Gaelic, Serbian, Slovak, Slovene, Spanish, Swedish, Tajik, Ukrainian, Vietnamese, and Welsh. Existing models for Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, and Turkish were also retrained with the new pipeline.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eEncodingEra\u003c/code\u003e filtering\u003c/strong\u003e: New \u003ccode\u003eencoding_era\u003c/code\u003e parameter to \u003ccode\u003edetect\u003c/code\u003e allows filtering by an \u003ccode\u003eEncodingEra\u003c/code\u003e flag enum (\u003ccode\u003eMODERN_WEB\u003c/code\u003e, \u003ccode\u003eLEGACY_ISO\u003c/code\u003e, \u003ccode\u003eLEGACY_MAC\u003c/code\u003e, \u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e, \u003ccode\u003eDOS\u003c/code\u003e, \u003ccode\u003eMAINFRAME\u003c/code\u003e, \u003ccode\u003eALL\u003c/code\u003e) allows callers to restrict detection to encodings from a specific era. \u003ccode\u003edetect()\u003c/code\u003e and \u003ccode\u003edetect_all()\u003c/code\u003e default to \u003ccode\u003eMODERN_WEB\u003c/code\u003e. The new \u003ccode\u003eMODERN_WEB\u003c/code\u003e default should drastically improve accuracy for users who are not working with legacy data. The tiers are:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMODERN_WEB\u003c/code\u003e: UTF-8/16/32, Windows-125x, CP874, CJK multi-byte (widely used on the web)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_ISO\u003c/code\u003e: ISO-8859-x, KOI8-R/U (legacy but well-known standards)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_MAC\u003c/code\u003e: Mac-specific encodings (MacRoman, MacCyrillic, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e: Uncommon regional/national encodings (KOI8-T, KZ1048, CP1006, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDOS\u003c/code\u003e: DOS/OEM code pages (CP437, CP850, CP866, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMAINFRAME\u003c/code\u003e: EBCDIC variants (CP037, CP500, etc.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--encoding-era\u003c/code\u003e CLI flag\u003c/strong\u003e: The \u003ccode\u003echardetect\u003c/code\u003e CLI now accepts \u003ccode\u003e-e\u003c/code\u003e/\u003ccode\u003e--encoding-era\u003c/code\u003e to control which encoding eras are considered during detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003echunk_size\u003c/code\u003e parameters\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e now accept \u003ccode\u003emax_bytes\u003c/code\u003e (default 200KB) and \u003ccode\u003echunk_size\u003c/code\u003e (default 64KB) parameters for controlling how much data is examined. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/314\"\u003e#314\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncoding era preference tie-breaking\u003c/strong\u003e: When multiple encodings have very close confidence scores, the detector now prefers more modern/Unicode encodings over legacy ones.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCharset metadata registry\u003c/strong\u003e: New \u003ccode\u003echardet.metadata.charsets\u003c/code\u003e module provides structured metadata about all supported encodings, including their era classification and language filter.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eshould_rename_legacy\u003c/code\u003e now defaults intelligently\u003c/strong\u003e: When set to \u003ccode\u003eNone\u003c/code\u003e (the new default), legacy renaming is automatically enabled when \u003ccode\u003eencoding_era\u003c/code\u003e is \u003ccode\u003eMODERN_WEB\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDirect GB18030 support\u003c/strong\u003e: Replaced the redundant GB2312 prober with a proper GB18030 prober.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEBCDIC detection\u003c/strong\u003e: Added CP037 and CP500 EBCDIC model registrations for mainframe encoding detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBinary file detection\u003c/strong\u003e: Added basic binary file detection to abort analysis earlier on non-text files.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.12, 3.13, and 3.14 support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e; \u003ca href=\"https://redirect.github.com/chardet/chardet/issues/311\"\u003e#311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitHub Codespace support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/312\"\u003e#312\u003c/a\u003e, \u003ca href=\"https://github.com/oxygen-dioxide\"\u003e\u003ccode\u003e@​oxygen-dioxide\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFix CP949 state machine\u003c/strong\u003e: Corrected the state machine for Korean CP949 encoding detection. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/268\"\u003e#268\u003c/a\u003e, \u003ca href=\"https://github.com/nenw\"\u003e\u003ccode\u003e@​nenw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix SJIS distribution analysis\u003c/strong\u003e: Fixed \u003ccode\u003eSJISDistributionAnalysis\u003c/code\u003e discarding valid second-byte range \u0026gt;= 0x80. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/315\"\u003e#315\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-16/32 detection for non-ASCII-heavy text\u003c/strong\u003e: Improved detection of UTF-16/32 encoded CJK and other non-ASCII text by adding a \u003ccode\u003eMIN_RATIO\u003c/code\u003e threshold alongside the existing \u003ccode\u003eEXPECTED_RATIO\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003eget_charset\u003c/code\u003e crash\u003c/strong\u003e: Resolved a crash when looking up unknown charset names.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix GB18030 \u003ccode\u003echar_len_table\u003c/code\u003e\u003c/strong\u003e: Corrected the character length table for GB18030 multi-byte sequences.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-8 state machine\u003c/strong\u003e: Updated to be more spec-compliant.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003edetect_all()\u003c/code\u003e returning inactive probers\u003c/strong\u003e: Results from probers that determined \u0026quot;definitely not this encoding\u0026quot; are now excluded.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix early cutoff bug\u003c/strong\u003e: Resolved an issue where detection could terminate prematurely.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDefault UTF-8 fallback\u003c/strong\u003e: If UTF-8 has not been ruled out and nothing else is above the minimum threshold, UTF-8 is now returned as the default.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDropped Python 3.7, 3.8, and 3.9 support\u003c/strong\u003e: Now requires Python 3.10+. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e\u003c/strong\u003e: These special-case probers have been replaced by the unified model-based approach described above. Latin-1, MacRoman, and all other single-byte encodings are now detected by \u003ccode\u003eSingleByteCharSetProber\u003c/code\u003e with trained language models, giving better accuracy and language identification.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved EUC-TW support\u003c/strong\u003e: EUC-TW encoding detection has been removed as it is extremely rare in practice.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eLanguageFilter.NONE\u003c/code\u003e removed\u003c/strong\u003e: Use specific language filters or \u003ccode\u003eLanguageFilter.ALL\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnum types changed\u003c/strong\u003e: \u003ccode\u003eInputState\u003c/code\u003e, \u003ccode\u003eProbingState\u003c/code\u003e, \u003ccode\u003eMachineState\u003c/code\u003e, \u003ccode\u003eSequenceLikelihood\u003c/code\u003e, and \u003ccode\u003eCharacterCategory\u003c/code\u003e are now \u003ccode\u003eIntEnum\u003c/code\u003e (previously plain classes or \u003ccode\u003eEnum\u003c/code\u003e). \u003ccode\u003eLanguageFilter\u003c/code\u003e values changed from hardcoded hex to \u003ccode\u003eauto()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003edetect()\u003c/code\u003e default behavior change\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e now defaults to \u003ccode\u003eencoding_era=EncodingEra.MODERN_WEB\u003c/code\u003e and \u003ccode\u003eshould_rename_legacy=None\u003c/code\u003e (auto-enabled for \u003ccode\u003eMODERN_WEB\u003c/code\u003e), whereas previously it defaulted to considering all encodings with no legacy renaming.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSwitched from Poetry/setuptools to uv + hatchling\u003c/strong\u003e: Build system modernized with \u003ccode\u003ehatch-vcs\u003c/code\u003e for version management.\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/chardet/chardet/commit/2fa72d84fdb9cb926eb1e7e40230a33b1dd81bb8\"\u003e\u003ccode\u003e2fa72d8\u003c/code\u003e\u003c/a\u003e Update version to 6.0.0.post1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/8a4636b1d4ef21d11cc8190f6ff271670b9d20ee\"\u003e\u003ccode\u003e8a4636b\u003c/code\u003e\u003c/a\u003e docs: modernize usage examples and reorganize table of contents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/20da71e7087159944e1ccfd586544a581744103a\"\u003e\u003ccode\u003e20da71e\u003c/code\u003e\u003c/a\u003e docs: fix copyright start year and remove first-person reference\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/b45ae91d9892c834a692e42d527670c6018d8301\"\u003e\u003ccode\u003eb45ae91\u003c/code\u003e\u003c/a\u003e docs: update copyright to 2015-2026 chardet contributors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/3f9910dbebfc2b268edba21eaf2175532c761c52\"\u003e\u003ccode\u003e3f9910d\u003c/code\u003e\u003c/a\u003e Add .readthedocs.yaml to fix RTD builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/7ef7cd00f27e18c5a846c75b5b4aecd0ddd36186\"\u003e\u003ccode\u003e7ef7cd0\u003c/code\u003e\u003c/a\u003e Fix pyright type errors in chardetect.py and test.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/4025dfa2487e9a72d940ccf31ad933171aa178e5\"\u003e\u003ccode\u003e4025dfa\u003c/code\u003e\u003c/a\u003e Update documentation for 6.0.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/117082980035dadbe723b798cba267c537374747\"\u003e\u003ccode\u003e1170829\u003c/code\u003e\u003c/a\u003e Add LEGACY_REGIONAL encoding era and reclassify misplaced encodings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/19379ac0110df41a76835a89756ae23abc528bd3\"\u003e\u003ccode\u003e19379ac\u003c/code\u003e\u003c/a\u003e Add --encoding-era CLI flag and improve heuristic selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/61308e2525dc43441ba07c6559d78bb9429ec31a\"\u003e\u003ccode\u003e61308e2\u003c/code\u003e\u003c/a\u003e Pre-release fixes: bump to 6.0.0, fix get_charset crash, cleanup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chardet/chardet/compare/5.2.0...6.0.0.post1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `environs` from 14.3.0 to 14.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sloria/environs/blob/main/CHANGELOG.md\"\u003eenvirons's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.6.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix variable expansion with other characters (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/359\"\u003e#359\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/flymanzhao\"\u003eflymanzhao\u003c/a\u003e for reporting and \u003ca href=\"https://github.com/veeceey\"\u003eveeceey\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate lowest supported marshmallow version to 3.26.2 (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/448\"\u003e#448\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/whyscream\"\u003ewhyscream\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.5.0 (2025-11-02)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estrip_whitespace\u003c/code\u003e param to \u003ccode\u003eFileAwareEnv\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/431\"\u003e#431\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/eandersons\"\u003eeandersons\u003c/a\u003e for the suggestion and PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, which is EOL.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.4.0 (2025-10-29)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for ISO 8601 durations to \u003ccode\u003eenv.timedelta\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/434\"\u003e#434\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/lucas-bremond\"\u003elucas-bremond\u003c/a\u003e for the suggestion and PR.\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/sloria/environs/commit/947d7bdf40953a10422a94baee7621e72f6c57e3\"\u003e\u003ccode\u003e947d7bd\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/1a47a3658bf705e6270cb685efc38c22264c9110\"\u003e\u003ccode\u003e1a47a36\u003c/code\u003e\u003c/a\u003e fix: use fullmatch for expand_vars single-variable detection (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/450\"\u003e#450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/f678dabd2ebb32a22a90f439d8518f8c2ddcb60c\"\u003e\u003ccode\u003ef678dab\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/449\"\u003e#449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/03c2e94c5fd4fbb93f8f1b45e8ab261cc52916a5\"\u003e\u003ccode\u003e03c2e94\u003c/code\u003e\u003c/a\u003e Update used marshmallow version according to CVE-2025-68480 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/3085b60655034b72d322fb40498d42b2f9e3d9bb\"\u003e\u003ccode\u003e3085b60\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/68d92c021f01e1e5c1e4edf63f1cfe71a2362f27\"\u003e\u003ccode\u003e68d92c0\u003c/code\u003e\u003c/a\u003e Add SECUCURITY.md (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/a4f550996d7d75107fe6525ecf905ef6483ed3b3\"\u003e\u003ccode\u003ea4f5509\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/cceab04b25cc676a0a023bda83ac094ac755142d\"\u003e\u003ccode\u003ecceab04\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/6730f6c8a91e40ef607162730e64734b6b779d4a\"\u003e\u003ccode\u003e6730f6c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/d04b64fed0193c7b8a0bb4bb3891c463ab60d988\"\u003e\u003ccode\u003ed04b64f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sloria/environs/compare/14.3.0...14.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `execnet` from 2.1.1 to 2.1.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/execnet/blob/master/CHANGELOG.rst\"\u003eexecnet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.1.2 (2025-11-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#376](https://github.com/pytest-dev/execnet/issues/376) \u0026lt;https://github.com/pytest-dev/execnet/issues/376\u0026gt;\u003c/code\u003e__ fix artifact building - pin minimal version of hatch.\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/execnet/commit/9313ece783ba2bd565eb1a2a8a71be441af56199\"\u003e\u003ccode\u003e9313ece\u003c/code\u003e\u003c/a\u003e Release 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/45a4d872775ae77366b62d6c93adb5c3ec51c966\"\u003e\u003ccode\u003e45a4d87\u003c/code\u003e\u003c/a\u003e Test on pypy-3.11 instead of pypy-3.8 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/03462f5ad357cb28de83f28af6977e620b81c607\"\u003e\u003ccode\u003e03462f5\u003c/code\u003e\u003c/a\u003e Update hatchling version requirement in pyproject.toml (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/f05618084b3e524babe6d684e97443a16c4ecaf2\"\u003e\u003ccode\u003ef056180\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/a9d75e74b6913b9f4940de4d90e796b464ca88f9\"\u003e\u003ccode\u003ea9d75e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/9bfff13008d02cb5e0943ac57811b07ed7d81ffd\"\u003e\u003ccode\u003e9bfff13\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/caf108da5946aa4355eb853cb0f1fb5d6a359013\"\u003e\u003ccode\u003ecaf108d\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d3074cd90921317e8d9510bf2fb41e48ed7b62fd\"\u003e\u003ccode\u003ed3074cd\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/35aa8073a2ae51a38bb787784fd79d0bfba517cb\"\u003e\u003ccode\u003e35aa807\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d823f13ba81a1d14051dda54eb0931c73b7afdf7\"\u003e\u003ccode\u003ed823f13\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/execnet/compare/v2.1.1...v2.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.1.45 to 3.1.46\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.46\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare a new release by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2063\"\u003egitpython-developers/GitPython#2063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 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/gitpython-developers/GitPython/pull/2067\"\u003egitpython-developers/GitPython#2067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e335c0f6\u003c/code\u003e to \u003ccode\u003e39d7dbf\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2068\"\u003egitpython-developers/GitPython#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 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/gitpython-developers/GitPython/pull/2070\"\u003egitpython-developers/GitPython#2070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e39d7dbf\u003c/code\u003e to \u003ccode\u003ef8fdfec\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2071\"\u003egitpython-developers/GitPython#2071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003eSymbolicReference.reference\u003c/code\u003e property by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add support for hasconfig git rule. by \u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 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/gitpython-developers/GitPython/pull/2076\"\u003egitpython-developers/GitPython#2076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse actual return type in annotation for method submodule_update by \u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003ef8fdfec\u003c/code\u003e to \u003ccode\u003e65321a2\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2082\"\u003egitpython-developers/GitPython#2082\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreliminary support for index format v3 by \u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/gitpython-developers/GitPython/pull/2084\"\u003egitpython-developers/GitPython#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin \u003ccode\u003emypy==1.18.2\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003eos.Pathlike\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2086\"\u003egitpython-developers/GitPython#2086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2093\"\u003egitpython-developers/GitPython#2093\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJoin \u003ccode\u003ePathlike\u003c/code\u003e Object to Tree by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2094\"\u003egitpython-developers/GitPython#2094\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/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\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/gitpython-developers/GitPython/commit/9e24eb6b72c1851e46e09133b83b48f2059037d7\"\u003e\u003ccode\u003e9e24eb6\u003c/code\u003e\u003c/a\u003e Prepare next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/b8bb60e544a1f389120b5540c6e1e7505427c279\"\u003e\u003ccode\u003eb8bb60e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2094\"\u003e#2094\u003c/a\u003e from George-Ogden/join-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/c8b58c09904dabe67222165e4d3eecf4c8f07490\"\u003e\u003ccode\u003ec8b58c0\u003c/code\u003e\u003c/a\u003e Update test/test_tree.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/88e26141c738f6ac3beb1a433039611f88c2c30d\"\u003e\u003ccode\u003e88e2614\u003c/code\u003e\u003c/a\u003e Allow joining path to tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9fa28ae108dc39cfb13282cd18d4251d0118dd52\"\u003e\u003ccode\u003e9fa28ae\u003c/code\u003e\u003c/a\u003e Add failing tests for joining paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/6d66a02d14929976d9d8409773054e2e022eae0e\"\u003e\u003ccode\u003e6d66a02\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2093\"\u003e#2093\u003c/a\u003e from gitpython-developers/dependabot/submodules/git/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/f738029ab05fe8356022248e68f9119c46b2f1e5\"\u003e\u003ccode\u003ef738029\u003c/code\u003e\u003c/a\u003e Bump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/eecc28d2e78d799105a2070acdb530ee5c81a9e8\"\u003e\u003ccode\u003eeecc28d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2086\"\u003e#2086\u003c/a\u003e from George-Ogden/true-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/0cb55fb4adca4f2b26767e85ef8652ef13b834a1\"\u003e\u003ccode\u003e0cb55fb\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Add tests with non-ascii characters\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/171062655e24b6a6ca1a3beab3c7679278350ab5\"\u003e\u003ccode\u003e1710626\u003c/code\u003e\u003c/a\u003e Add tests with non-ascii characters\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\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 `iniconfig` from 2.1.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.0\"\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 25.0 to 26.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\u003e26.0\u003c/h2\u003e\n\u003cp\u003eRead about the performance improvements here: \u003ca href=\"https://iscinumpy.dev/post/packaging-faster\"\u003ehttps://iscinumpy.dev/post/packaging-faster\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock 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/900\"\u003epypa/packaging#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata by \u003ca href=\"https://github.com/brettcannon\"\u003e\u003ccode\u003e@​brettcannon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/948\"\u003epypa/packaging#948\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport writing metadata 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/846\"\u003epypa/packaging#846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e for \u003ccode\u003eVersion\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/1003\"\u003epypa/packaging#1003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifier\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/1004\"\u003epypa/packaging#1004\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e 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/897\"\u003epypa/packaging#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e 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/942\"\u003epypa/packaging#942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e 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/951\"\u003epypa/packaging#951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/932\"\u003epypa/packaging#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. 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/954\"\u003epypa/packaging#954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparsions by \u003ca href=\"https://github.com/JP-Ellis\"\u003e\u003ccode\u003e@​JP-Ellis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/939\"\u003epypa/packaging#939\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e by \u003ca href=\"https://github.com/dholth\"\u003e\u003ccode\u003e@​dholth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/860\"\u003epypa/packaging#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e 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/896\"\u003epypa/packaging#896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/868\"\u003epypa/packaging#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e by \u003ca href=\"https://github.com/bwoodsend\"\u003e\u003ccode\u003e@​bwoodsend\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/879\"\u003epypa/packaging#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format by \u003ca href=\"https://github.com/di\"\u003e\u003ccode\u003e@​di\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/925\"\u003epypa/packaging#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon by \u003ca href=\"https://github.com/pradyunsg\"\u003e\u003ccode\u003e@​pradyunsg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/833\"\u003epypa/packaging#833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/931\"\u003epypa/packaging#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string 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/953\"\u003epypa/packaging#953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA root logger use found by ruff LOG, use \u003ccode\u003epackaging\u003c/code\u003e logger instead 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/965\"\u003epypa/packaging#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\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/1022\"\u003epypa/packaging#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first 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/1024\"\u003epypa/packaging#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct 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/1033\"\u003epypa/packaging#1033\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup by \u003ca href=\"https://github.com/hauntsaninja\"\u003e\u003ccode\u003e@​hauntsaninja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1019\"\u003epypa/packaging#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/869\"\u003epypa/packaging#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/bearomorphism\"\u003e\u003ccode\u003e@​bearomorphism\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/913\"\u003epypa/packaging#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003es in specifier comparison 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/986\"\u003epypa/packaging#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eSpecifier\u003c/code\u003e's Version 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/985\"\u003epypa/packaging#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster 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/987\"\u003epypa/packaging#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup 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/990\"\u003epypa/packaging#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ 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/988\"\u003epypa/packaging#988\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1055\"\u003epypa/packaging#1055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e 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/989\"\u003epypa/packaging#989\u003c/a\u003e and regression for \u003ccode\u003epackaging_legacy\u003c/code\u003e fixed 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/1048\"\u003epypa/packaging#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\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/993\"\u003epypa/packaging#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003efullmatch\u003c/code\u003e in a couple more places 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/992\"\u003epypa/packaging#992\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.0 - 2026-01-20\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock (:pull:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata (:pull:\u003ccode\u003e948\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport for writing metadata to a file (:pull:\u003ccode\u003e846\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e on Version (:pull:\u003ccode\u003e1003\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e1004\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e897\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e942\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e951\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version (:pull:\u003ccode\u003e932\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. (:pull:\u003ccode\u003e954\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparisons (:pull:\u003ccode\u003e939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e (:pull:\u003ccode\u003e860\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e (:pull:\u003ccode\u003e896\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e (:pull:\u003ccode\u003e868\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e (:pull:\u003ccode\u003e879\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format (:pull:\u003ccode\u003e925\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon (:pull:\u003ccode\u003e833\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions (:pull:\u003ccode\u003e931\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string (:pull:\u003ccode\u003e953\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eA root logger use found, use a \u003ccode\u003epackaging\u003c/code\u003e logger instead (:pull:\u003ccode\u003e965\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\u003c/code\u003e (:pull:\u003ccode\u003e1022\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first (:pull:\u003ccode\u003e1024\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct (:pull:\u003ccode\u003e1033\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup (:pull:\u003ccode\u003e1019\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e (:pull:\u003ccode\u003e869\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e913\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003e's in specifier comparison (:pull:\u003ccode\u003e986\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e985\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster (:pull:\u003ccode\u003e987\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup (:pull:\u003ccode\u003e990\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ for \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e988\u003c/code\u003e, :pull:\u003ccode\u003e1055\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e989\u003c/code\u003e, :pull:\u003ccode\u003e1048\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\u003c/code\u003e (:pull:\u003ccode\u003e993\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ere.fullmatch\u003c/code\u003e in a couple more places (:pull:\u003ccode\u003e992\u003c/code\u003e, :pull:\u003ccode\u003e1029\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003emap\u003c/code\u003e instead of generator (:pull:\u003ccode\u003e996\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003e._version\u003c/code\u003e (\u003ccode\u003e_Version\u003c/code\u003e, a \u003ccode\u003eNamedTuple\u003c/code\u003e) (:pull:\u003ccode\u003e995\u003c/code\u003e, :pull:\u003ccode\u003e1062\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\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/3b77a26f5a27473ad3b08194d773f325d018a2d0\"\u003e\u003ccode\u003e3b77a26\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/31371cce593d2bde0dd8c436ecfb7d53cb91cfb6\"\u003e\u003ccode\u003e31371cc\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0 final (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9627a8821f09e4c55cd6e9daadb617b67c4741c2\"\u003e\u003ccode\u003e9627a88\u003c/code\u003e\u003c/a\u003e perf: dual replace (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1064\"\u003e#1064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d5398b8bc19f3fad7b035ceb83023caf06d6e2da\"\u003e\u003ccode\u003ed5398b8\u003c/code\u003e\u003c/a\u003e fix: restore ._version as a compat shim (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1062\"\u003e#1062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3a7b600a126d237b2ad3cd7e25d2cb5c176276af\"\u003e\u003ccode\u003e3a7b600\u003c/code\u003e\u003c/a\u003e Bump for development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d4eefdccf992e963c48011875301d93df6a7f2cc\"\u003e\u003ccode\u003ed4eefdc\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/46189124fb43d8989d370902c80ab156eb83a45d\"\u003e\u003ccode\u003e4618912\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0rc3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1060\"\u003e#1060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/0cf1b41b4b321ae08cad7d3e49cfaff5578fe813\"\u003e\u003ccode\u003e0cf1b41\u003c/code\u003e\u003c/a\u003e ci: test on first public release of CPythons (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/716beb1c0a5d7a398bf57fbd80bc2501811e616b\"\u003e\u003ccode\u003e716beb1\u003c/code\u003e\u003c/a\u003e perf:  10% faster stripping zeros (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1058\"\u003e#1058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/350a2306700b738f487f251efa278f532b263dee\"\u003e\u003ccode\u003e350a230\u003c/code\u003e\u003c/a\u003e fix: support CPython 3.11.0-3.11.4 and older PyPy3.11 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse` from 1.20.2 to 1.21.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/r1chardj0n3s/parse/releases\"\u003eparse's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.21.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix microsecond precision loss in timestamp parsing by \u003ca href=\"https://github.com/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\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/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eallow triggering CI manually by \u003ca href=\"https://github.com/wimglenn\"\u003e\u003ccode\u003e@​wimglenn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/195\"\u003er1chardj0n3s/parse#195\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eActually raise exception by \u003ca href=\"https://github.com/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereadme: Clarify 'd' type by \u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions-infrastructure group 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/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow grouping char (,_) in decimal format string by \u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#221\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/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#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/r1chardj0n3s/parse/compare/1.20.2...1.21.0\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.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/r1chardj0n3s/parse/commit/9a2ae8d2c77e845415e5ad6952e7b2dba09a56d2\"\u003e\u003ccode\u003e9a2ae8d\u003c/code\u003e\u003c/a\u003e bump version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/cd6bf203ab0353c038a0556fbbe0851ff56f539d\"\u003e\u003ccode\u003ecd6bf20\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/223\"\u003e#223\u003c/a\u003e from karthiksai109/fix-microsecond-precision\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/ba6803d57179a4b026c8ed51d970156653153b62\"\u003e\u003ccode\u003eba6803d\u003c/code\u003e\u003c/a\u003e Fix microsecond precision loss in timestamp parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/738447715c76f8ebc460b33320307faccafbc599\"\u003e\u003ccode\u003e7384477\u003c/code\u003e\u003c/a\u003e release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/35b9ffb355f94bc4cb781fbb3b0adff2232a5602\"\u003e\u003ccode\u003e35b9ffb\u003c/code\u003e\u003c/a\u003e Allow grouping char (,_) in decimal format string (\u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d50f48c4dcabbeaf738061c186314a1433572ae0\"\u003e\u003ccode\u003ed50f48c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/219\"\u003e#219\u003c/a\u003e from r1chardj0n3s/dependabot/github_actions/actions-i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/96cdf95c01a8e4d9659bcc81dfc20ada2f788276\"\u003e\u003ccode\u003e96cdf95\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the actions-infrastructure group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d5bd49a6232f3a0ad074e30ec1e02959cdb3e70c\"\u003e\u003ccode\u003ed5bd49a\u003c/code\u003e\u003c/a\u003e restore 3.7 and 2.7 test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/5bfb45d9f30890e85a5c440e14fc25a930a3faaf\"\u003e\u003ccode\u003e5bfb45d\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/a497a407397f23ef527879a136e7fef2344180db\"\u003e\u003ccode\u003ea497a40\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/198\"\u003e#198\u003c/a\u003e from dreua/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse-type` from 0.6.4 to 0.6.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jenisys/parse_type/releases\"\u003eparse-type's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable setuptools-scm: Too many side-effects\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.6.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eREADME: Remove \u0026quot;downloads\u0026quot; badge -- too noisy\u003c/li\u003e\n\u003cli\u003esetup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003etests: Fix file permissions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003edevelop:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003eCI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003eCI: Add python 3.14.0-rc.1 (as experimental python version).\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/jenisys/parse_type/commit/5c4126ae3973b5c0a4107cd8b29f2b74993be330\"\u003e\u003ccode\u003e5c4126a\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Disable setuptools-scm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/cb115df7fdfad2dfb98bff950f23a6aebd575e96\"\u003e\u003ccode\u003ecb115df\u003c/code\u003e\u003c/a\u003e invoke:\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/562679afba6859a9fd89487abb88255de614004c\"\u003e\u003ccode\u003e562679a\u003c/code\u003e\u003c/a\u003e CI: Add python 3.14.0-rc.1 (as experimental python version).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4d408d8a6dec4ec190e8497721a1b57db581962b\"\u003e\u003ccode\u003e4d408d8\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/14c409e3c98c6c02ea143537ef6f54693513014f\"\u003e\u003ccode\u003e14c409e\u003c/code\u003e\u003c/a\u003e CI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4fa182eef7156a32da5ec3ffda6c7c4e66d28482\"\u003e\u003ccode\u003e4fa182e\u003c/code\u003e\u003c/a\u003e develop: Use uv w/ direnv to setup workspace and venv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4e4cb772a88caab981eac3fda7fed9e67821beb5\"\u003e\u003ccode\u003e4e4cb77\u003c/code\u003e\u003c/a\u003e tests: Fix file permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/35096a3f1c8f1d02b2809a69a68f84fc8d39904b\"\u003e\u003ccode\u003e35096a3\u003c/code\u003e\u003c/a\u003e CI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/fdae4602ee39e949258146909535d337b4b0fb3f\"\u003e\u003ccode\u003efdae460\u003c/code\u003e\u003c/a\u003e CI: Add python 3.13.0-rc.3 (currently a pre-release).\u003c/li\u003e\n\u003cli\u003eSee ful...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-helm-charts/development/pull/494","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-helm-charts%2Fdevelopment/issues/494","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/494/packages"},{"uuid":"3979774980","node_id":"PR_kwDOPrR8PM7FuvAs","number":1518,"state":"open","title":"deps(python)(deps): bump the python-dependencies group across 1 directory with 149 updates","user":"dependabot[bot]","labels":["dependencies","python","priority: high","security"],"assignees":["GrayGhostDev"],"locked":false,"comments_count":11,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-23T19:23:27.000Z","updated_at":"2026-03-02T20:07:47.730Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps): bump","group_name":"python-dependencies","update_count":149,"packages":[{"name":"aiodns","old_version":"3.2.0","new_version":"3.6.1","repository_url":"https://github.com/saghul/aiodns"},{"name":"aiohttp-retry","old_version":"2.8.3","new_version":"2.9.1","repository_url":"https://github.com/inyutin/aiohttp_retry"},{"name":"anthropic","old_version":"0.75.0","new_version":"0.83.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"apispec","old_version":"6.7.1","new_version":"6.9.0","repository_url":"https://github.com/marshmallow-code/apispec"},{"name":"apispec-webframeworks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/marshmallow-code/apispec-webframeworks"},{"name":"asgiref","old_version":"3.9.2","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"authlib","old_version":"1.6.5","new_version":"1.6.8","repository_url":"https://github.com/authlib/authlib"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.3","repository_url":"https://github.com/PyCQA/bandit"},{"name":"basedpyright","old_version":"1.36.2","new_version":"1.38.1","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"cachetools","old_version":"5.5.0","new_version":"5.5.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.1","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.127.0","new_version":"0.132.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.20.1","new_version":"3.24.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"googleapis-common-protos","old_version":"1.59.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.78.1","repository_url":"https://github.com/grpc/grpc"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"hvac","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jiter","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"langchain","old_version":"1.2.2","new_version":"1.2.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.2.6","new_version":"1.2.15","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.7","new_version":"1.1.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-text-splitters","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.0.5","new_version":"1.0.9","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.1","new_version":"0.3.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.6.1","new_version":"0.7.6","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"lxml","old_version":"6.0.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown","old_version":"3.7","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.4","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodejs-wheel-binaries","old_version":"24.12.0","new_version":"24.13.1","repository_url":"https://github.com/njzjz/nodejs-wheel"},{"name":"opentelemetry-api","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.3","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"ormsgpack","old_version":"1.12.1","new_version":"1.12.2","repository_url":"https://github.com/ormsgpack/ormsgpack"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"phonenumbers","old_version":"8.13.50","new_version":"8.13.55","repository_url":"https://github.com/daviddrysdale/python-phonenumbers"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"playwright","old_version":"1.57.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"postgrest","old_version":"0.18.0","new_version":"0.19.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"prometheus-fastapi-instrumentator","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/trallnag/prometheus-fastapi-instrumentator"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.3.2","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psutil","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pusher","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pusher/pusher-http-python"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycares","old_version":"5.0.0","new_version":"5.0.1","repository_url":"https://github.com/saghul/pycares"},{"name":"pydantic","old_version":"2.9.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.23.4","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.1","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.1","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"realtime","old_version":"2.5.3","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.9.11","new_version":"2024.11.6","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.14","new_version":"0.2.15"},{"name":"ruff","old_version":"0.14.10","new_version":"0.15.2","repository_url":"https://github.com/astral-sh/ruff"},{"name":"safety-schemas","old_version":"0.0.16","new_version":"0.0.18","repository_url":"https://github.com/pyupio/safety_schemas"},{"name":"sendgrid","old_version":"6.11.0","new_version":"6.12.5","repository_url":"https://github.com/sendgrid/sendgrid-python"},{"name":"sentry-sdk","old_version":"2.19.2","new_version":"2.53.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.45","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"storage3","old_version":"0.9.0","new_version":"0.12.2","repository_url":"https://github.com/supabase/supabase-py"},{"name":"stripe","old_version":"8.0.0","new_version":"8.11.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"supabase","old_version":"2.10.0","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supafunc","old_version":"0.7.0","new_version":"0.10.2","repository_url":"https://github.com/supabase/functions-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tomli","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.19.2","new_version":"0.24.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uuid-utils","old_version":"0.12.0","new_version":"0.14.1","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.41.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"yarl","old_version":"1.17.1","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pylint","old_version":"3.3.2","new_version":"3.3.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest-html","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/pytest-dev/pytest-html"},{"name":"faker","old_version":"33.1.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"responses","old_version":"0.25.8","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"ipython","old_version":"8.18.1","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"mkdocs-material","old_version":"9.7.1","new_version":"9.7.2","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"backrefs","old_version":"6.1","new_version":"6.2","repository_url":"https://github.com/facelessuser/backrefs"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 149 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiodns](https://github.com/saghul/aiodns) | `3.2.0` | `3.6.1` |\n| [aiohttp-retry](https://github.com/inyutin/aiohttp_retry) | `2.8.3` | `2.9.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.75.0` | `0.83.0` |\n| [apispec](https://github.com/marshmallow-code/apispec) | `6.7.1` | `6.9.0` |\n| [apispec-webframeworks](https://github.com/marshmallow-code/apispec-webframeworks) | `1.1.0` | `1.2.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.9.2` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.5` | `1.6.8` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.3` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.36.2` | `1.38.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `5.5.2` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.1` | `7.13.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.127.0` | `0.132.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.1` | `3.24.3` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.61.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.59.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.0` | `3.3.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.78.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [hvac](https://github.com/hvac/hvac) | `2.1.0` | `2.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.13.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.2.2` | `1.2.10` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.3.0` | `1.3.3` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.2.6` | `1.2.15` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.7` | `1.1.10` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.0` | `1.1.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.9` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.8` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.1` | `0.3.8` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.6.1` | `0.7.6` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.0` | `6.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.4` | `6.7.1` |\n| [nodejs-wheel-binaries](https://github.com/njzjz/nodejs-wheel) | `24.12.0` | `24.13.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.42b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.3` | `3.11.7` |\n| [ormsgpack](https://github.com/ormsgpack/ormsgpack) | `1.12.1` | `1.12.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) | `8.13.50` | `8.13.55` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.2` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.57.0` | `1.58.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `0.18.0` | `0.19.3` |\n| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `7.0.0` | `7.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.4.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `6.1.1` |\n| [pusher](https://github.com/pusher/pusher-http-python) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycares](https://github.com/saghul/pycares) | `5.0.0` | `5.0.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.23.4` | `2.42.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.11.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.0` | `3.3.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `3.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.22` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.5.3` | `2.28.0` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.9.11` | `2024.11.6` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.14` | `0.2.15` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.10` | `0.15.2` |\n| [safety-schemas](https://github.com/pyupio/safety_schemas) | `0.0.16` | `0.0.18` |\n| [sendgrid](https://github.com/sendgrid/sendgrid-python) | `6.11.0` | `6.12.5` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.19.2` | `2.53.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.45` | `2.0.46` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [storage3](https://github.com/supabase/supabase-py) | `0.9.0` | `0.12.2` |\n| [stripe](https://github.com/stripe/stripe-python) | `8.0.0` | `8.11.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.10.0` | `2.28.0` |\n| [supafunc](https://github.com/supabase/functions-py) | `0.7.0` | `0.10.2` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.3.0` | `2.4.0` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.3` | `0.14.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [typer](https://github.com/fastapi/typer) | `0.19.2` | `0.24.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.15.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.14.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.41.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.6.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.4` | `3.1.6` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.2` | `3.3.9` |\n| [pytest-html](https://github.com/pytest-dev/pytest-html) | `4.1.1` | `4.2.0` |\n| [faker](https://github.com/joke2k/faker) | `33.1.0` | `33.3.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.8` | `0.26.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `8.38.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.1` | `9.7.2` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.0` | `1.5.1` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.1` | `6.2` |\n\n\nUpdates `aiodns` from 3.2.0 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiodns/blob/master/ChangeLog\"\u003eaiodns's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.6.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePin pycares to \u0026lt; 5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.6.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ePrevents resolver from being garbage collected while queries are in progress\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSocket callback optimizations (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/172\"\u003e#172\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved performance for socket state handling\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed RTD links (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.9.0 to 4.11.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/186\"\u003e#186\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 1.0.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/181\"\u003e#181\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.2.1 to 7.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/193\"\u003e#193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.4.0 to 8.4.2 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/171\"\u003e#171\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/190\"\u003e#190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.16.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/170\"\u003e#170\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/179\"\u003e#179\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/195\"\u003e#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/197\"\u003e#197\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped uvloop from 0.21.0 to 0.22.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/202\"\u003e#202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped winloop from 0.1.8 to 0.3.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/182\"\u003e#182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/183\"\u003e#183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/184\"\u003e#184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/187\"\u003e#187\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/200\"\u003e#200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/201\"\u003e#201\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/checkout from 4 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/188\"\u003e#188\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded explicit close method (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/166\"\u003e#166\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eAllows proper cleanup of resources on demand\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed return type signature for CNAME and SOA records (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/162\"\u003e#162\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eCorrected type annotations for better type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImproved Windows event loop documentation (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/163\"\u003e#163\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eProvided more accurate information on supported event loops on Windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded pre-commit configuration with ruff (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/152\"\u003e#152\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved code quality and consistency\u003c/li\u003e\n\u003cli\u003eReformatted code and normalized end-of-line characters (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/155\"\u003e#155\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.8.0 to 4.9.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 0.26.0 to 1.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.1.1 to 6.2.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.3.5 to 8.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.15.0 to 1.16.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded fallback to \u003ccode\u003esock_state_cb\u003c/code\u003e if \u003ccode\u003eevent_thread\u003c/code\u003e creation fails (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/151\"\u003e#151\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved reliability on systems with exhausted inotify watches\u003c/li\u003e\n\u003cli\u003eImplemented transparent fallback mechanism to ensure DNS resolution continues to work\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImplemented strict typing (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/138\"\u003e#138\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/aio-libs/aiodns/commit/1067970f92bc386b8b04469e83287e140e39c562\"\u003e\u003ccode\u003e1067970\u003c/code\u003e\u003c/a\u003e Release 3.6.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/a85b558b71cf9464a4c876f57490224ee98e3829\"\u003e\u003ccode\u003ea85b558\u003c/code\u003e\u003c/a\u003e build: prevent incompatible pycares versions (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/6d63e75848ec975c51667c6c3fd115f27199716f\"\u003e\u003ccode\u003e6d63e75\u003c/code\u003e\u003c/a\u003e Bump winloop from 0.3.1 to 0.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/be007e21337ca638e4ee987d8a3c91ca31fd8211\"\u003e\u003ccode\u003ebe007e2\u003c/code\u003e\u003c/a\u003e Release 3.6.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/4cb8ab83bb21b7bbf152b9ca71baf2c74427fc9d\"\u003e\u003ccode\u003e4cb8ab8\u003c/code\u003e\u003c/a\u003e Fix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/e088cf48f6a30006e0545f8a4794210d3d99779f\"\u003e\u003ccode\u003ee088cf4\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/23dc7727637bedb972d91614ee73922ff84d4d1a\"\u003e\u003ccode\u003e23dc772\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/3a1bddf5dec8e79af7690d6caffec84746e096e4\"\u003e\u003ccode\u003e3a1bddf\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/b57721e1267c614f329eb36eb700ca2f1468446c\"\u003e\u003ccode\u003eb57721e\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/ac6803818ad533749bedc9e11b691da0fe4bbe85\"\u003e\u003ccode\u003eac68038\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/saghul/aiodns/compare/v3.2.0...v3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp-retry` from 2.8.3 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/inyutin/aiohttp_retry/releases\"\u003eaiohttp-retry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests init file by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/106\"\u003einyutin/aiohttp_retry#106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the client sometimes would not retry by \u003ca href=\"https://github.com/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\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/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRetry based on HTTP methods by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/103\"\u003einyutin/aiohttp_retry#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: _RequestContext._do_request() by \u003ca href=\"https://github.com/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ruff by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/99\"\u003einyutin/aiohttp_retry#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code-coverage by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/100\"\u003einyutin/aiohttp_retry#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python packages up to 3.13 by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/101\"\u003einyutin/aiohttp_retry#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo detected by codespell + add codespell workflow to avoid typos sneaking in by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove documentation a little bit by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/102\"\u003einyutin/aiohttp_retry#102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ci dependencies by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/104\"\u003einyutin/aiohttp_retry#104\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/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.0\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.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/inyutin/aiohttp_retry/commit/39b23915023dde0e0298b822de3d23960a5024e6\"\u003e\u003ccode\u003e39b2391\u003c/code\u003e\u003c/a\u003e Fix the client sometimes would not retry (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/4b406631f39963d7cda97086e89da6c740c56a6d\"\u003e\u003ccode\u003e4b40663\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/106\"\u003e#106\u003c/a\u003e from inyutin/tests-init-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5007c9a469e46198cab7f7a1f944166ae82d045f\"\u003e\u003ccode\u003e5007c9a\u003c/code\u003e\u003c/a\u003e Add tests init file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/75dbda9057f5cc7fe2d44ce6b60018381b84a08b\"\u003e\u003ccode\u003e75dbda9\u003c/code\u003e\u003c/a\u003e Add workflow_dispatch to publish package CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/f402cf6e0d59992945ae7833b903a8aef5a114b3\"\u003e\u003ccode\u003ef402cf6\u003c/code\u003e\u003c/a\u003e Package version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/1dca2d92da43cc011175f4cbef2c64d7f166d111\"\u003e\u003ccode\u003e1dca2d9\u003c/code\u003e\u003c/a\u003e publish CI update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5ea8c8eab3706617011b5ba7ff0a86cec5c4182a\"\u003e\u003ccode\u003e5ea8c8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/104\"\u003e#104\u003c/a\u003e from inyutin/dev-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/87c03ed64383710d05350ec0ce2110950fb327ab\"\u003e\u003ccode\u003e87c03ed\u003c/code\u003e\u003c/a\u003e Encode pytest asyncio setting in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/7af8295a7c99b1824c96f1a07f6cef1e1e64b4d7\"\u003e\u003ccode\u003e7af8295\u003c/code\u003e\u003c/a\u003e Update ci dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/723961d3c2e841da8232b2da92e354c70624310c\"\u003e\u003ccode\u003e723961d\u003c/code\u003e\u003c/a\u003e Retry based on HTTP methods (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.75.0 to 0.83.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.83.0\u003c/h2\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.82.0\u003c/h2\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.81.0\u003c/h2\u003e\n\u003ch2\u003e0.81.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.80.0...v0.81.0\"\u003ev0.80.0...v0.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Make new tool versions available as top level tool types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0a385c29d26981f846b7394aefc89eebb43a4b60\"\u003e0a385c2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.80.0\u003c/h2\u003e\n\u003ch2\u003e0.80.0 (2026-02-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.79.0...v0.80.0\"\u003ev0.79.0...v0.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Releasing claude-sonnet-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d518d6ecede3d0638f0b14950dc2be8efa0b4ff4\"\u003ed518d6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix spec errors (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1413a76f905e590fab583417f5cb1eef9f537c2c\"\u003e1413a76\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.81.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.80.0...v0.81.0\"\u003ev0.80.0...v0.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0a385c29d26981f846b7394aefc89eebb43a4b60\"\u003e0a385c2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.80.0 (2026-02-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.79.0...v0.80.0\"\u003ev0.79.0...v0.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Releasing claude-sonnet-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d518d6ecede3d0638f0b14950dc2be8efa0b4ff4\"\u003ed518d6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix spec errors (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1413a76f905e590fab583417f5cb1eef9f537c2c\"\u003e1413a76\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove speed from ga messages (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1402\"\u003e#1402\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f6ce67c3ed5f2fc4a2fc48fb9d7bc6f1bbb5bd4a\"\u003ef6ce67c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\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/anthropics/anthropic-sdk-python/commit/7a6c642f51b603f9ef46c5603f48ccd55371e4cb\"\u003e\u003ccode\u003e7a6c642\u003c/code\u003e\u003c/a\u003e release: 0.83.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7ecac54c1ae91eb205fff16acbf65b36e444ed19\"\u003e\u003ccode\u003e7ecac54\u003c/code\u003e\u003c/a\u003e feat(api): Add top-level cache control (automatic caching)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/74793c8f43608aa19e1a05eea7b715509bfc1aa5\"\u003e\u003ccode\u003e74793c8\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f1181087ae843cad9ebd2cdab0e5bc052eec6de6\"\u003e\u003ccode\u003ef118108\u003c/code\u003e\u003c/a\u003e chore: update mock server docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c6499b9515a81eca05b6008920255f5f0f2ca17e\"\u003e\u003ccode\u003ec6499b9\u003c/code\u003e\u003c/a\u003e release: 0.82.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/acc4720fca9aa1c3690dc52d124ac79787b71b3a\"\u003e\u003ccode\u003eacc4720\u003c/code\u003e\u003c/a\u003e release: 0.81.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4de03c2ddc247084770a04a203d2e71666a6ad37\"\u003e\u003ccode\u003e4de03c2\u003c/code\u003e\u003c/a\u003e release: 0.80.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1173\"\u003e#1173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/cd1b39bf073c5482ed1c717f11147365eb68bbe9\"\u003e\u003ccode\u003ecd1b39b\u003c/code\u003e\u003c/a\u003e release: 0.79.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/fb52a6a09d09cde88913e36dadb03c335815d79a\"\u003e\u003ccode\u003efb52a6a\u003c/code\u003e\u003c/a\u003e fix: pass speed parameter through in sync beta count_tokens\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b7c2df239d1256ee358501a2cd89bfe9ea129abe\"\u003e\u003ccode\u003eb7c2df2\u003c/code\u003e\u003c/a\u003e feat(api): enabling fast-mode in claude-opus-4-6\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.75.0...v0.83.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec` from 6.7.1 to 6.9.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec/blob/dev/CHANGELOG.rst\"\u003eapispec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.9.0 (2025-11-30)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eexamples\u003c/code\u003e property from field metadata (:pr:\u003ccode\u003e999\u003c/code\u003e).\nThanks :user:\u003ccode\u003eFlix6x\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 (:pr:\u003ccode\u003e998\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 (:pr:\u003ccode\u003e994\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.4 (2025-09-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eTimeDelta\u003c/code\u003e field type according to \u003ccode\u003eserialization_type\u003c/code\u003e (:pr:\u003ccode\u003e990\u003c/code\u003e).\nThanks :user:\u003ccode\u003eLewisHaley\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.3 (2025-09-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e if\n\u003ccode\u003eunknown\u003c/code\u003e is not set (:pr:\u003ccode\u003e988\u003c/code\u003e).\nThanks :user:\u003ccode\u003emwgamble\u003c/code\u003e for reporting.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e according to \u003ccode\u003eunknown\u003c/code\u003e\nvalue passed at schema instantiation, not only as \u003ccode\u003eMeta\u003c/code\u003e attribute\n(:pr:\u003ccode\u003e988\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.2 (2025-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e doesn't override \u003ccode\u003eadditionalProperties\u003c/code\u003e explicitly\npassed to \u003ccode\u003efields.Dict\u003c/code\u003e (:pr:\u003ccode\u003e976\u003c/code\u003e).\nThanks :user:\u003ccode\u003e0x0400\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerf improvement to \u003ccode\u003efilter_excluded_fields\u003c/code\u003e (:issue:\u003ccode\u003e972\u003c/code\u003e).\nThanks :user:\u003ccode\u003eallrob23\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.1 (2025-01-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\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/marshmallow-code/apispec/commit/58265d009f7cf027f22356a3fe9ea80813bcb36e\"\u003e\u003ccode\u003e58265d0\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/e25f2d4ab50855cfb9977dbbd167d1f67eae4f35\"\u003e\u003ccode\u003ee25f2d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/999\"\u003e#999\u003c/a\u003e from SeitaBV/feat/support-examples-property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/eab75c737746e46c9002f1d59b1fcd3c46f5855c\"\u003e\u003ccode\u003eeab75c7\u003c/code\u003e\u003c/a\u003e feat: add test of metadata examples field\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/3a620c64b7506374cf8094deb0d786ee221e95a9\"\u003e\u003ccode\u003e3a620c6\u003c/code\u003e\u003c/a\u003e chore: AUTHORS.rst entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/0349ca265eda89f8e633aa3b09b0a8348afb6d11\"\u003e\u003ccode\u003e0349ca2\u003c/code\u003e\u003c/a\u003e docs: thank myself (a bit presumptuous, don't I think)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/8f74aa5bed1d3e65d6917674d2475701df275a53\"\u003e\u003ccode\u003e8f74aa5\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/32f4f34a229674d274e17b50b57ffa4e9610df4c\"\u003e\u003ccode\u003e32f4f34\u003c/code\u003e\u003c/a\u003e docs: add changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/867ae3b93254e822af1a18e83ebb6761aa07511b\"\u003e\u003ccode\u003e867ae3b\u003c/code\u003e\u003c/a\u003e feat: 'examples' is a supported property in OpenAPI 3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/40210699852a926c13a8d351e280c4a41070fc27\"\u003e\u003ccode\u003e4021069\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/c10c481ee4300056e07c134272d13c44a3283f90\"\u003e\u003ccode\u003ec10c481\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/998\"\u003e#998\u003c/a\u003e from marshmallow-code/py314\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec/compare/6.7.1...6.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec-webframeworks` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/blob/main/CHANGELOG.rst\"\u003eapispec-webframeworks's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2024-09-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTornadoPlugin: Ensure consistent ordering for HTTP path keys\n(:pr:\u003ccode\u003e159\u003c/code\u003e). Thanks :user:\u003ccode\u003ebhperry\u003c/code\u003e for the PR.\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/marshmallow-code/apispec-webframeworks/commit/ebf43f149e685e3fe2abca2a1224b87e6c7415c1\"\u003e\u003ccode\u003eebf43f1\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/e26e46369626b225eb2776075e1ad116f18dc6b5\"\u003e\u003ccode\u003ee26e463\u003c/code\u003e\u003c/a\u003e Consistent ordering for HTTP path keys (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/abcb590d894572ab53865ad8f7d355f62c94cbf7\"\u003e\u003ccode\u003eabcb590\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/377fe6bd9aa8fc70d24dd65ef1d55016d8dd4fea\"\u003e\u003ccode\u003e377fe6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/bda9880a0d91692162ca87dcb30f35c404d9afbd\"\u003e\u003ccode\u003ebda9880\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/b5940fa3aa996eecce81dd536689aca3844c7580\"\u003e\u003ccode\u003eb5940fa\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/6c7f164bc58a9c647ecda3dd801bc75dab9f21d1\"\u003e\u003ccode\u003e6c7f164\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/154\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/7326a3f262caf41c3f64648cc231fdb9f6ac9d48\"\u003e\u003ccode\u003e7326a3f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/9da38826c861ea88f60f173e6f9bb212b522a22c\"\u003e\u003ccode\u003e9da3882\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/1db8ed966be0e710a14e6518a86f6ce72981504f\"\u003e\u003ccode\u003e1db8ed9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/compare/1.1.0...1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.9.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\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/django/asgiref/commit/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/asgiref/compare/3.9.2...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `authlib` from 1.6.5 to 1.6.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.8\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eEdDSA\u003c/code\u003e to default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSet supported algorithms for the default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/p\u003e\n\u003ch2\u003ev1.6.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(ClientAuth): fix incorrect signature when Content-Type is x-www-form-urlencoded by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable by \u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter. by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/844\"\u003eauthlib/authlib#844\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/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\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/authlib/authlib/blob/main/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e.. meta::\n:description: The full list of changes between each Authlib release.\u003c/p\u003e\n\u003cp\u003eHere you can see the full list of changes between each Authlib release.\u003c/p\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eUnreleased\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eOpenID Connect RP-Initiated Logout 1.0 \u0026lt;https://openid.net/specs/openid-connect-rpinitiated-1_0.html\u0026gt;\u003c/code\u003e_.\nSee :ref:\u003ccode\u003especs/rpinitiated\u003c/code\u003e for details. :issue:\u003ccode\u003e500\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePer RFC 6749 Section 3.3, the \u003ccode\u003escope\u003c/code\u003e parameter is now optional at both\nauthorization and token endpoints. \u003ccode\u003eclient.get_allowed_scope()\u003c/code\u003e is called\nto determine the default scope when omitted. :issue:\u003ccode\u003e845\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9, start support Python 3.14. :pr:\u003ccode\u003e850\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eAuthorizationServerMetadata.validate()\u003c/code\u003e to compose with RFC extension classes.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at=0\u003c/code\u003e being incorrectly treated as \u003ccode\u003eNone\u003c/code\u003e. :issue:\u003ccode\u003e530\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eResourceProtector\u003c/code\u003e decorator to be used without parentheses. :issue:\u003ccode\u003e604\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUpgrade Guide: :ref:\u003ccode\u003ejoserfc_upgrade\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 1.6.6\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Dec 12, 2025\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter, :pr:\u003ccode\u003e844\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix incorrect signature when \u003ccode\u003eContent-Type\u003c/code\u003e is x-www-form-urlencoded for OAuth 1.0 Client, :pr:\u003ccode\u003e778\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eexpires_in\u003c/code\u003e in \u003ccode\u003eOAuth2Token\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable, :pr:\u003ccode\u003e842\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAlways track \u003ccode\u003estate\u003c/code\u003e in session for OAuth client integrations.\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/authlib/authlib/commit/a769f343ae8d43236448e3e74445980861812e82\"\u003e\u003ccode\u003ea769f34\u003c/code\u003e\u003c/a\u003e chore: release 1.6.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/84f3fa2965a189c16528329e8cfe41d094008588\"\u003e\u003ccode\u003e84f3fa2\u003c/code\u003e\u003c/a\u003e fix: add EdDSA to default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/38e872a3f5b97d2658507acc8762a4e18adaa50e\"\u003e\u003ccode\u003e38e872a\u003c/code\u003e\u003c/a\u003e chore: release 1.6.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b87c32ed07b8ae7f805873e1c9cafd1016761df7\"\u003e\u003ccode\u003eb87c32e\u003c/code\u003e\u003c/a\u003e fix: remove \u0026quot;none\u0026quot; algorithm from default jwt instance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/bb7a315befbad333faf9a23ef574d6e3134a6774\"\u003e\u003ccode\u003ebb7a315\u003c/code\u003e\u003c/a\u003e chore: release 1.6.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/0a423d4638bed1c0fe4597b2296a85c5bb59fba2\"\u003e\u003ccode\u003e0a423d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/844\"\u003e#844\u003c/a\u003e from azmeuk/806-get-jwt-config-client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/2808378611dd6fb2532b189a9087877d8f0c0489\"\u003e\u003ccode\u003e2808378\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/714502a4738bc29f26eb245b0c66718d8536cdda\"\u003e\u003ccode\u003e714502a\u003c/code\u003e\u003c/a\u003e feat: get_jwt_config takes a client parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/260d04edee23d8470057ea659c16fb8a2c7b0dc2\"\u003e\u003ccode\u003e260d04e\u003c/code\u003e\u003c/a\u003e Fix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/eb37124bbbec6ccbfba3699d8960f9710d330ad8\"\u003e\u003ccode\u003eeb37124\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/778\"\u003e#778\u003c/a\u003e from shc261392/fix-httpx-oauth1-form-data-incorrect-s...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\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/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/36d6f3c091d84dc547019d773ab6e63a1cbc23af\"\u003e\u003ccode\u003e36d6f3c\u003c/code\u003e\u003c/a\u003e Update tox tests for Python 3.10 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/da0d33816ba5c5f8f72a380720ad054596867807\"\u003e\u003ccode\u003eda0d338\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1341\"\u003e#1341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/649b9bdf87f4f9d850b29819b14b847bd3b8f970\"\u003e\u003ccode\u003e649b9bd\u003c/code\u003e\u003c/a\u003e Add check for hardcoded passwords in dicts. (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1338\"\u003e#1338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/3c56109061524f5907cc4d475b7370bac47a451b\"\u003e\u003ccode\u003e3c56109\u003c/code\u003e\u003c/a\u003e Fix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1337\"\u003e#1337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b790ce22f0a69f53468c1755e9d37e6349a2c8c2\"\u003e\u003ccode\u003eb790ce2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1335\"\u003e#1335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/0b73bbe59642097050d5c698e55d13bae2c6b78c\"\u003e\u003ccode\u003e0b73bbe\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.36.2 to 1.38.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ce372dde9b384dfa25c0294dc637ce0ec4638a05\"\u003e\u003ccode\u003ece372dd\u003c/code\u003e\u003c/a\u003e 1.38.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/83c1dc799597a1d342caa9dc6476711c1086dde9\"\u003e\u003ccode\u003e83c1dc7\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e guards in match statements (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/41f6c01f71734513e6ac518d52e09fd905abae3d\"\u003e\u003ccode\u003e41f6c01\u003c/code\u003e\u003c/a\u003e fix docstubs not being generated for older python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b00fdc450d57f58202bf37d641be0014a86c4952\"\u003e\u003ccode\u003eb00fdc4\u003c/code\u003e\u003c/a\u003e add tests to ensure that docstubs for multiple python versions are correctly ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/c34d0449c5a53aedabd07707813a3b7b84556cb5\"\u003e\u003ccode\u003ec34d044\u003c/code\u003e\u003c/a\u003e fix language server crash on abstract setter with no parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/55769d6a28b348ff0aaa3cc5e0917f0823f70b3c\"\u003e\u003ccode\u003e55769d6\u003c/code\u003e\u003c/a\u003e fix crash generating docstubs for older python versions caused by breaking ch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/c3d29bf0deef8d16c4df8aa004651d1230c3e743\"\u003e\u003ccode\u003ec3d29bf\u003c/code\u003e\u003c/a\u003e fuck bash worst language ever\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/4bf506e4d15144c33f6ee03deeb72af9e830e17c\"\u003e\u003ccode\u003e4bf506e\u003c/code\u003e\u003c/a\u003e update links to docify repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bc0955b639d6842812a83b6094538c1c84b5a6c4\"\u003e\u003ccode\u003ebc0955b\u003c/code\u003e\u003c/a\u003e update \u003ccode\u003egenerate_docstubs.py\u003c/code\u003e script to use the new docify multithreaded mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a66be176971051dad271284e3e72d30fce0e8430\"\u003e\u003ccode\u003ea66be17\u003c/code\u003e\u003c/a\u003e bump python dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.36.2...v1.38.1\"\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.4 to 4.14.3\n\nUpdates `billiard` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks by \u003ca href=\"https://github.com/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/439\"\u003ecelery/billiard#439\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/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.3...v4.2.4\"\u003ehttps://github.com/celery/billiard/compare/v4.2.3...v4.2.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/436\"\u003ecelery/billiard#436\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/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.2...v4.2.3\"\u003ehttps://github.com/celery/billiard/compare/v4.2.2...v4.2.3\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/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.4 - 2025-11-30\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.3 - 2025-11-16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\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/celery/billiard/commit/69c2f296c2b36622a90c548f26c940712cb9a1df\"\u003e\u003ccode\u003e69c2f29\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/973c773fee4ccd1ab1151d0801905176b284075d\"\u003e\u003ccode\u003e973c773\u003c/code\u003e\u003c/a\u003e Eliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/51153949934c247ac23de990eee4073adcf08083\"\u003e\u003ccode\u003e5115394\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/437\"\u003e#437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/e8f51d1995cf251787001683dbf443098d8b0ed7\"\u003e\u003ccode\u003ee8f51d1\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/8603172ab818f5069dd191dfaa3eb0a7653c6dda\"\u003e\u003ccode\u003e8603172\u003c/code\u003e\u003c/a\u003e Ensure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/849a3e8414cae0ba953d7c164129c1320e2a241d\"\u003e\u003ccode\u003e849a3e8\u003c/code\u003e\u003c/a\u003e Bump github...\n\n_Description has been truncated_","html_url":"https://github.com/GrayGhostDev/ToolboxAI-Solutions/pull/1518","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrayGhostDev%2FToolboxAI-Solutions/issues/1518","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1518/packages"},{"uuid":"3965385142","node_id":"PR_kwDORJXmGM7FAOA3","number":251,"state":"open","title":"Bump iniconfig from 2.0.0 to 2.3.0","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-19T22:12:29.000Z","updated_at":"2026-02-19T22:12:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.0.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/26\"\u003e#26\u003c/a\u003e - list individuals in license file by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/52\"\u003epytest-dev/iniconfig#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun tests in CI by \u003ca href=\"https://github.com/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epypa/gh-action-pypi-publish@release/v1\u003c/code\u003e @ GHA by \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12-3.13 and drop EOL 3.7 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/56\"\u003epytest-dev/iniconfig#56\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/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix artifact building - pin minimal version of hatch\u003c/li\u003e\n\u003cli\u003edrop eol python 3.8\u003c/li\u003e\n\u003cli\u003eadd python 3.12 and 3.13\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.0.0\u0026new-version=2.3.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/masonj0/favplc/pull/251","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/masonj0%2Ffavplc/issues/251","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/251/packages"},{"uuid":"3954511196","node_id":"PR_kwDORSj3Nc7EcwHk","number":10,"state":"closed","title":"Bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-17T21:52:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-17T20:22:27.000Z","updated_at":"2026-02-17T21:52:35.000Z","time_to_close":5405,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/turintech/openvino-runtime/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/turintech%2Fopenvino-runtime/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"},{"uuid":"3949032493","node_id":"PR_kwDOPrR8PM7EKmEP","number":1511,"state":"open","title":"deps(python)(deps): bump the python-dependencies group across 1 directory with 142 updates","user":"dependabot[bot]","labels":["dependencies","python","priority: high","security"],"assignees":["GrayGhostDev"],"locked":false,"comments_count":10,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-16T18:24:21.000Z","updated_at":"2026-02-16T18:25:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps): bump","group_name":"python-dependencies","update_count":142,"packages":[{"name":"aiodns","old_version":"3.2.0","new_version":"3.6.1","repository_url":"https://github.com/saghul/aiodns"},{"name":"aiohttp-retry","old_version":"2.8.3","new_version":"2.9.1","repository_url":"https://github.com/inyutin/aiohttp_retry"},{"name":"anthropic","old_version":"0.75.0","new_version":"0.79.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"apispec","old_version":"6.7.1","new_version":"6.9.0","repository_url":"https://github.com/marshmallow-code/apispec"},{"name":"apispec-webframeworks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/marshmallow-code/apispec-webframeworks"},{"name":"asgiref","old_version":"3.9.2","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"authlib","old_version":"1.6.5","new_version":"1.6.8","repository_url":"https://github.com/authlib/authlib"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.3","repository_url":"https://github.com/PyCQA/bandit"},{"name":"basedpyright","old_version":"1.36.2","new_version":"1.38.0","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"cachetools","old_version":"5.5.0","new_version":"5.5.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.1","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.127.0","new_version":"0.129.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.20.1","new_version":"3.24.2","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"googleapis-common-protos","old_version":"1.59.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"hvac","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jiter","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"langchain","old_version":"1.2.2","new_version":"1.2.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.2.6","new_version":"1.2.13","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.7","new_version":"1.1.9","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.5","new_version":"1.0.7","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.1","new_version":"0.3.6","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.6.1","new_version":"0.7.3","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"lxml","old_version":"6.0.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown","old_version":"3.7","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.4","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodejs-wheel-binaries","old_version":"24.12.0","new_version":"24.13.1","repository_url":"https://github.com/njzjz/nodejs-wheel"},{"name":"opentelemetry-api","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.3","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"ormsgpack","old_version":"1.12.1","new_version":"1.12.2","repository_url":"https://github.com/ormsgpack/ormsgpack"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"phonenumbers","old_version":"8.13.50","new_version":"8.13.55","repository_url":"https://github.com/daviddrysdale/python-phonenumbers"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"playwright","old_version":"1.57.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"postgrest","old_version":"0.18.0","new_version":"0.19.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"prometheus-fastapi-instrumentator","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/trallnag/prometheus-fastapi-instrumentator"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.3.2","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psutil","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pusher","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pusher/pusher-http-python"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycares","old_version":"5.0.0","new_version":"5.0.1","repository_url":"https://github.com/saghul/pycares"},{"name":"pydantic","old_version":"2.9.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.23.4","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.1","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.1","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"realtime","old_version":"2.5.3","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.9.11","new_version":"2024.11.6","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.14","new_version":"0.2.15"},{"name":"ruff","old_version":"0.14.10","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"safety-schemas","old_version":"0.0.16","new_version":"0.0.18","repository_url":"https://github.com/pyupio/safety_schemas"},{"name":"sendgrid","old_version":"6.11.0","new_version":"6.12.5","repository_url":"https://github.com/sendgrid/sendgrid-python"},{"name":"sentry-sdk","old_version":"2.19.2","new_version":"2.53.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.45","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"storage3","old_version":"0.9.0","new_version":"0.12.2","repository_url":"https://github.com/supabase/supabase-py"},{"name":"stripe","old_version":"8.0.0","new_version":"8.11.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"supabase","old_version":"2.10.0","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supafunc","old_version":"0.7.0","new_version":"0.10.2","repository_url":"https://github.com/supabase/functions-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tomli","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.19.2","new_version":"0.23.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uuid-utils","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.1.4","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"yarl","old_version":"1.17.1","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"pylint","old_version":"3.3.2","new_version":"3.3.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest-html","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/pytest-dev/pytest-html"},{"name":"faker","old_version":"33.1.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"ipython","old_version":"8.18.1","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 142 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiodns](https://github.com/saghul/aiodns) | `3.2.0` | `3.6.1` |\n| [aiohttp-retry](https://github.com/inyutin/aiohttp_retry) | `2.8.3` | `2.9.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.75.0` | `0.79.0` |\n| [apispec](https://github.com/marshmallow-code/apispec) | `6.7.1` | `6.9.0` |\n| [apispec-webframeworks](https://github.com/marshmallow-code/apispec-webframeworks) | `1.1.0` | `1.2.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.9.2` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.5` | `1.6.8` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.3` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.36.2` | `1.38.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `5.5.2` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.1` | `7.13.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.127.0` | `0.129.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.1` | `3.24.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.61.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.59.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.0` | `3.3.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.78.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [hvac](https://github.com/hvac/hvac) | `2.1.0` | `2.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.13.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.2.2` | `1.2.10` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.3.0` | `1.3.3` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.2.6` | `1.2.13` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.7` | `1.1.9` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.8` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.7` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.1` | `0.3.6` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.6.1` | `0.7.3` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.0` | `6.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.4` | `6.7.1` |\n| [nodejs-wheel-binaries](https://github.com/njzjz/nodejs-wheel) | `24.12.0` | `24.13.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.42b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.3` | `3.11.7` |\n| [ormsgpack](https://github.com/ormsgpack/ormsgpack) | `1.12.1` | `1.12.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) | `8.13.50` | `8.13.55` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.2` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.57.0` | `1.58.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `0.18.0` | `0.19.3` |\n| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `7.0.0` | `7.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.4.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `6.1.1` |\n| [pusher](https://github.com/pusher/pusher-http-python) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycares](https://github.com/saghul/pycares) | `5.0.0` | `5.0.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.23.4` | `2.41.5` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.11.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.0` | `3.3.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `3.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.22` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.5.3` | `2.28.0` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.9.11` | `2024.11.6` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.14` | `0.2.15` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.10` | `0.15.1` |\n| [safety-schemas](https://github.com/pyupio/safety_schemas) | `0.0.16` | `0.0.18` |\n| [sendgrid](https://github.com/sendgrid/sendgrid-python) | `6.11.0` | `6.12.5` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.19.2` | `2.53.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.45` | `2.0.46` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [storage3](https://github.com/supabase/supabase-py) | `0.9.0` | `0.12.2` |\n| [stripe](https://github.com/stripe/stripe-python) | `8.0.0` | `8.11.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.10.0` | `2.28.0` |\n| [supafunc](https://github.com/supabase/functions-py) | `0.7.0` | `0.10.2` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.3.0` | `2.4.0` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.3` | `0.14.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [typer](https://github.com/fastapi/typer) | `0.19.2` | `0.23.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.15.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.14.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.6.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.4` | `3.1.5` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.0` | `1.5.1` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.2` | `3.3.9` |\n| [pytest-html](https://github.com/pytest-dev/pytest-html) | `4.1.1` | `4.2.0` |\n| [faker](https://github.com/joke2k/faker) | `33.1.0` | `33.3.1` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `8.38.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n\n\nUpdates `aiodns` from 3.2.0 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiodns/blob/master/ChangeLog\"\u003eaiodns's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.6.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePin pycares to \u0026lt; 5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.6.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ePrevents resolver from being garbage collected while queries are in progress\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSocket callback optimizations (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/172\"\u003e#172\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved performance for socket state handling\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed RTD links (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.9.0 to 4.11.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/186\"\u003e#186\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 1.0.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/181\"\u003e#181\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.2.1 to 7.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/193\"\u003e#193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.4.0 to 8.4.2 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/171\"\u003e#171\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/190\"\u003e#190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.16.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/170\"\u003e#170\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/179\"\u003e#179\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/195\"\u003e#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/197\"\u003e#197\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped uvloop from 0.21.0 to 0.22.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/202\"\u003e#202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped winloop from 0.1.8 to 0.3.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/182\"\u003e#182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/183\"\u003e#183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/184\"\u003e#184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/187\"\u003e#187\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/200\"\u003e#200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/201\"\u003e#201\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/checkout from 4 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/188\"\u003e#188\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded explicit close method (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/166\"\u003e#166\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eAllows proper cleanup of resources on demand\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed return type signature for CNAME and SOA records (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/162\"\u003e#162\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eCorrected type annotations for better type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImproved Windows event loop documentation (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/163\"\u003e#163\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eProvided more accurate information on supported event loops on Windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded pre-commit configuration with ruff (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/152\"\u003e#152\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved code quality and consistency\u003c/li\u003e\n\u003cli\u003eReformatted code and normalized end-of-line characters (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/155\"\u003e#155\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.8.0 to 4.9.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 0.26.0 to 1.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.1.1 to 6.2.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.3.5 to 8.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.15.0 to 1.16.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded fallback to \u003ccode\u003esock_state_cb\u003c/code\u003e if \u003ccode\u003eevent_thread\u003c/code\u003e creation fails (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/151\"\u003e#151\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved reliability on systems with exhausted inotify watches\u003c/li\u003e\n\u003cli\u003eImplemented transparent fallback mechanism to ensure DNS resolution continues to work\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImplemented strict typing (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/138\"\u003e#138\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/aio-libs/aiodns/commit/1067970f92bc386b8b04469e83287e140e39c562\"\u003e\u003ccode\u003e1067970\u003c/code\u003e\u003c/a\u003e Release 3.6.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/a85b558b71cf9464a4c876f57490224ee98e3829\"\u003e\u003ccode\u003ea85b558\u003c/code\u003e\u003c/a\u003e build: prevent incompatible pycares versions (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/6d63e75848ec975c51667c6c3fd115f27199716f\"\u003e\u003ccode\u003e6d63e75\u003c/code\u003e\u003c/a\u003e Bump winloop from 0.3.1 to 0.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/be007e21337ca638e4ee987d8a3c91ca31fd8211\"\u003e\u003ccode\u003ebe007e2\u003c/code\u003e\u003c/a\u003e Release 3.6.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/4cb8ab83bb21b7bbf152b9ca71baf2c74427fc9d\"\u003e\u003ccode\u003e4cb8ab8\u003c/code\u003e\u003c/a\u003e Fix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/e088cf48f6a30006e0545f8a4794210d3d99779f\"\u003e\u003ccode\u003ee088cf4\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/23dc7727637bedb972d91614ee73922ff84d4d1a\"\u003e\u003ccode\u003e23dc772\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/3a1bddf5dec8e79af7690d6caffec84746e096e4\"\u003e\u003ccode\u003e3a1bddf\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/b57721e1267c614f329eb36eb700ca2f1468446c\"\u003e\u003ccode\u003eb57721e\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/ac6803818ad533749bedc9e11b691da0fe4bbe85\"\u003e\u003ccode\u003eac68038\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/saghul/aiodns/compare/v3.2.0...v3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp-retry` from 2.8.3 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/inyutin/aiohttp_retry/releases\"\u003eaiohttp-retry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests init file by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/106\"\u003einyutin/aiohttp_retry#106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the client sometimes would not retry by \u003ca href=\"https://github.com/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\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/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRetry based on HTTP methods by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/103\"\u003einyutin/aiohttp_retry#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: _RequestContext._do_request() by \u003ca href=\"https://github.com/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ruff by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/99\"\u003einyutin/aiohttp_retry#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code-coverage by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/100\"\u003einyutin/aiohttp_retry#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python packages up to 3.13 by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/101\"\u003einyutin/aiohttp_retry#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo detected by codespell + add codespell workflow to avoid typos sneaking in by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove documentation a little bit by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/102\"\u003einyutin/aiohttp_retry#102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ci dependencies by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/104\"\u003einyutin/aiohttp_retry#104\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/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.0\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.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/inyutin/aiohttp_retry/commit/39b23915023dde0e0298b822de3d23960a5024e6\"\u003e\u003ccode\u003e39b2391\u003c/code\u003e\u003c/a\u003e Fix the client sometimes would not retry (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/4b406631f39963d7cda97086e89da6c740c56a6d\"\u003e\u003ccode\u003e4b40663\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/106\"\u003e#106\u003c/a\u003e from inyutin/tests-init-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5007c9a469e46198cab7f7a1f944166ae82d045f\"\u003e\u003ccode\u003e5007c9a\u003c/code\u003e\u003c/a\u003e Add tests init file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/75dbda9057f5cc7fe2d44ce6b60018381b84a08b\"\u003e\u003ccode\u003e75dbda9\u003c/code\u003e\u003c/a\u003e Add workflow_dispatch to publish package CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/f402cf6e0d59992945ae7833b903a8aef5a114b3\"\u003e\u003ccode\u003ef402cf6\u003c/code\u003e\u003c/a\u003e Package version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/1dca2d92da43cc011175f4cbef2c64d7f166d111\"\u003e\u003ccode\u003e1dca2d9\u003c/code\u003e\u003c/a\u003e publish CI update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5ea8c8eab3706617011b5ba7ff0a86cec5c4182a\"\u003e\u003ccode\u003e5ea8c8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/104\"\u003e#104\u003c/a\u003e from inyutin/dev-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/87c03ed64383710d05350ec0ce2110950fb327ab\"\u003e\u003ccode\u003e87c03ed\u003c/code\u003e\u003c/a\u003e Encode pytest asyncio setting in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/7af8295a7c99b1824c96f1a07f6cef1e1e64b4d7\"\u003e\u003ccode\u003e7af8295\u003c/code\u003e\u003c/a\u003e Update ci dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/723961d3c2e841da8232b2da92e354c70624310c\"\u003e\u003ccode\u003e723961d\u003c/code\u003e\u003c/a\u003e Retry based on HTTP methods (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.75.0 to 0.79.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.79.0\u003c/h2\u003e\n\u003ch2\u003e0.79.0 (2026-02-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.78.0...v0.79.0\"\u003ev0.78.0...v0.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e enabling fast-mode in claude-opus-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5953ba7b425ba113595de570bc8c639ff4dc4047\"\u003e5953ba7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003epass speed parameter through in sync beta count_tokens (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1dd6119daca6de7a6eb730eb2494f368889ea050\"\u003e1dd6119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.78.0\u003c/h2\u003e\n\u003ch2\u003e0.78.0 (2026-02-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.1...v0.78.0\"\u003ev0.77.1...v0.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Release Claude Opus 4.6, adaptive thinking, and other features (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3ef1529b45c55645646cc6043784f999fda088de\"\u003e3ef1529\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.77.1\u003c/h2\u003e\n\u003ch2\u003e0.77.1 (2026-02-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.0...v0.77.1\"\u003ev0.77.0...v0.77.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estructured outputs:\u003c/strong\u003e send structured output beta header when format is omitted (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1158\"\u003e#1158\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/258494e2b814a6a096b01e50f83560b4cf4a98ad\"\u003e258494e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove claude-code-review workflow (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1338\"\u003e#1338\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/aec4512305e8dce41df8ef0ab225f4939e099bcf\"\u003eaec4512\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.77.0\u003c/h2\u003e\n\u003ch2\u003e0.77.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.76.0...v0.77.0\"\u003ev0.76.0...v0.77.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Structured Outputs in the Messages API (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ad5667774ad2e7efd181bcfda03fab3ea50630b9\"\u003ead56677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e migrate sending message format in output_config rather than output_format (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af405e473f7cf6091cb8e711264227b9b0508528\"\u003eaf405e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add custom JSON encoder for extended type support (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7780e90bd2fe4c1116d59bc0ad543aa609fc643d\"\u003e7780e90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse output_config for structured outputs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/82d669db652ed3d9aede61fd500fabb291b8f035\"\u003e82d669d\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.79.0 (2026-02-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.78.0...v0.79.0\"\u003ev0.78.0...v0.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e enabling fast-mode in claude-opus-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5953ba7b425ba113595de570bc8c639ff4dc4047\"\u003e5953ba7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003epass speed parameter through in sync beta count_tokens (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1dd6119daca6de7a6eb730eb2494f368889ea050\"\u003e1dd6119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.78.0 (2026-02-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.1...v0.78.0\"\u003ev0.77.1...v0.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Release Claude Opus 4.6, adaptive thinking, and other features (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3ef1529b45c55645646cc6043784f999fda088de\"\u003e3ef1529\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.77.1 (2026-02-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.0...v0.77.1\"\u003ev0.77.0...v0.77.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estructured outputs:\u003c/strong\u003e send structured output beta header when format is omitted (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1158\"\u003e#1158\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/258494e2b814a6a096b01e50f83560b4cf4a98ad\"\u003e258494e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove claude-code-review workflow (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1338\"\u003e#1338\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/aec4512305e8dce41df8ef0ab225f4939e099bcf\"\u003eaec4512\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.77.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.76.0...v0.77.0\"\u003ev0.76.0...v0.77.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Structured Outputs in the Messages API (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ad5667774ad2e7efd181bcfda03fab3ea50630b9\"\u003ead56677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e migrate sending message format in output_config rather than output_format (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af405e473f7cf6091cb8e711264227b9b0508528\"\u003eaf405e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add custom JSON encoder for extended type support (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7780e90bd2fe4c1116d59bc0ad543aa609fc643d\"\u003e7780e90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse output_config for structured outputs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/82d669db652ed3d9aede61fd500fabb291b8f035\"\u003e82d669d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e run formatter (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/2e4ff86d7b8bef8fe5c4b7e62bf47dfff79f0577\"\u003e2e4ff86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove class causing breaking change (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1333\"\u003e#1333\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/81ee9533d14f9dc3753a4a1320ea744825b17e92\"\u003e81ee953\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/anthropics/anthropic-sdk-python/commit/cd1b39bf073c5482ed1c717f11147365eb68bbe9\"\u003e\u003ccode\u003ecd1b39b\u003c/code\u003e\u003c/a\u003e release: 0.79.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/fb52a6a09d09cde88913e36dadb03c335815d79a\"\u003e\u003ccode\u003efb52a6a\u003c/code\u003e\u003c/a\u003e fix: pass speed parameter through in sync beta count_tokens\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b7c2df239d1256ee358501a2cd89bfe9ea129abe\"\u003e\u003ccode\u003eb7c2df2\u003c/code\u003e\u003c/a\u003e feat(api): enabling fast-mode in claude-opus-4-6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7c42e4b04b170d88f39805b2b5956fa04a6e26d5\"\u003e\u003ccode\u003e7c42e4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1163\"\u003e#1163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f2b61ed11c36de713bdf6ec27cd502826965c882\"\u003e\u003ccode\u003ef2b61ed\u003c/code\u003e\u003c/a\u003e release: 0.78.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a4a29cab92c50bebc636bf97cd3177719a1cd8df\"\u003e\u003ccode\u003ea4a29ca\u003c/code\u003e\u003c/a\u003e feat(api): manual updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3955600d74eafef1eef5a66f460b54ed5deaf130\"\u003e\u003ccode\u003e3955600\u003c/code\u003e\u003c/a\u003e release: 0.77.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/eca8ddfb199a012ac8d5fd362757c4155afcb419\"\u003e\u003ccode\u003eeca8ddf\u003c/code\u003e\u003c/a\u003e fix(structured outputs): send structured output beta header when format is om...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ee44c52131650fb17ee618d20d17f792d5071230\"\u003e\u003ccode\u003eee44c52\u003c/code\u003e\u003c/a\u003e chore: remove claude-code-review workflow (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1338\"\u003e#1338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9c485f6966e10ae0ea9eabb3a921d2ea8145a25b\"\u003e\u003ccode\u003e9c485f6\u003c/code\u003e\u003c/a\u003e release: 0.77.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.75.0...v0.79.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec` from 6.7.1 to 6.9.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec/blob/dev/CHANGELOG.rst\"\u003eapispec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.9.0 (2025-11-30)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eexamples\u003c/code\u003e property from field metadata (:pr:\u003ccode\u003e999\u003c/code\u003e).\nThanks :user:\u003ccode\u003eFlix6x\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 (:pr:\u003ccode\u003e998\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 (:pr:\u003ccode\u003e994\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.4 (2025-09-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eTimeDelta\u003c/code\u003e field type according to \u003ccode\u003eserialization_type\u003c/code\u003e (:pr:\u003ccode\u003e990\u003c/code\u003e).\nThanks :user:\u003ccode\u003eLewisHaley\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.3 (2025-09-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e if\n\u003ccode\u003eunknown\u003c/code\u003e is not set (:pr:\u003ccode\u003e988\u003c/code\u003e).\nThanks :user:\u003ccode\u003emwgamble\u003c/code\u003e for reporting.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e according to \u003ccode\u003eunknown\u003c/code\u003e\nvalue passed at schema instantiation, not only as \u003ccode\u003eMeta\u003c/code\u003e attribute\n(:pr:\u003ccode\u003e988\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.2 (2025-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e doesn't override \u003ccode\u003eadditionalProperties\u003c/code\u003e explicitly\npassed to \u003ccode\u003efields.Dict\u003c/code\u003e (:pr:\u003ccode\u003e976\u003c/code\u003e).\nThanks :user:\u003ccode\u003e0x0400\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerf improvement to \u003ccode\u003efilter_excluded_fields\u003c/code\u003e (:issue:\u003ccode\u003e972\u003c/code\u003e).\nThanks :user:\u003ccode\u003eallrob23\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.1 (2025-01-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\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/marshmallow-code/apispec/commit/58265d009f7cf027f22356a3fe9ea80813bcb36e\"\u003e\u003ccode\u003e58265d0\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/e25f2d4ab50855cfb9977dbbd167d1f67eae4f35\"\u003e\u003ccode\u003ee25f2d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/999\"\u003e#999\u003c/a\u003e from SeitaBV/feat/support-examples-property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/eab75c737746e46c9002f1d59b1fcd3c46f5855c\"\u003e\u003ccode\u003eeab75c7\u003c/code\u003e\u003c/a\u003e feat: add test of metadata examples field\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/3a620c64b7506374cf8094deb0d786ee221e95a9\"\u003e\u003ccode\u003e3a620c6\u003c/code\u003e\u003c/a\u003e chore: AUTHORS.rst entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/0349ca265eda89f8e633aa3b09b0a8348afb6d11\"\u003e\u003ccode\u003e0349ca2\u003c/code\u003e\u003c/a\u003e docs: thank myself (a bit presumptuous, don't I think)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/8f74aa5bed1d3e65d6917674d2475701df275a53\"\u003e\u003ccode\u003e8f74aa5\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/32f4f34a229674d274e17b50b57ffa4e9610df4c\"\u003e\u003ccode\u003e32f4f34\u003c/code\u003e\u003c/a\u003e docs: add changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/867ae3b93254e822af1a18e83ebb6761aa07511b\"\u003e\u003ccode\u003e867ae3b\u003c/code\u003e\u003c/a\u003e feat: 'examples' is a supported property in OpenAPI 3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/40210699852a926c13a8d351e280c4a41070fc27\"\u003e\u003ccode\u003e4021069\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/c10c481ee4300056e07c134272d13c44a3283f90\"\u003e\u003ccode\u003ec10c481\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/998\"\u003e#998\u003c/a\u003e from marshmallow-code/py314\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec/compare/6.7.1...6.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec-webframeworks` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/blob/main/CHANGELOG.rst\"\u003eapispec-webframeworks's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2024-09-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTornadoPlugin: Ensure consistent ordering for HTTP path keys\n(:pr:\u003ccode\u003e159\u003c/code\u003e). Thanks :user:\u003ccode\u003ebhperry\u003c/code\u003e for the PR.\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/marshmallow-code/apispec-webframeworks/commit/ebf43f149e685e3fe2abca2a1224b87e6c7415c1\"\u003e\u003ccode\u003eebf43f1\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/e26e46369626b225eb2776075e1ad116f18dc6b5\"\u003e\u003ccode\u003ee26e463\u003c/code\u003e\u003c/a\u003e Consistent ordering for HTTP path keys (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/abcb590d894572ab53865ad8f7d355f62c94cbf7\"\u003e\u003ccode\u003eabcb590\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/377fe6bd9aa8fc70d24dd65ef1d55016d8dd4fea\"\u003e\u003ccode\u003e377fe6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/bda9880a0d91692162ca87dcb30f35c404d9afbd\"\u003e\u003ccode\u003ebda9880\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/b5940fa3aa996eecce81dd536689aca3844c7580\"\u003e\u003ccode\u003eb5940fa\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/6c7f164bc58a9c647ecda3dd801bc75dab9f21d1\"\u003e\u003ccode\u003e6c7f164\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/154\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/7326a3f262caf41c3f64648cc231fdb9f6ac9d48\"\u003e\u003ccode\u003e7326a3f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/9da38826c861ea88f60f173e6f9bb212b522a22c\"\u003e\u003ccode\u003e9da3882\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/1db8ed966be0e710a14e6518a86f6ce72981504f\"\u003e\u003ccode\u003e1db8ed9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/compare/1.1.0...1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.9.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\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/django/asgiref/commit/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/asgiref/compare/3.9.2...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `authlib` from 1.6.5 to 1.6.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSet supported algorithms for the default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/p\u003e\n\u003ch2\u003ev1.6.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(ClientAuth): fix incorrect signature when Content-Type is x-www-form-urlencoded by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable by \u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter. by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/844\"\u003eauthlib/authlib#844\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/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\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/authlib/authlib/blob/main/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e.. meta::\n:description: The full list of changes between each Authlib release.\u003c/p\u003e\n\u003cp\u003eHere you can see the full list of changes between each Authlib release.\u003c/p\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eUnreleased\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eOpenID Connect RP-Initiated Logout 1.0 \u0026lt;https://openid.net/specs/openid-connect-rpinitiated-1_0.html\u0026gt;\u003c/code\u003e_.\nSee :ref:\u003ccode\u003especs/rpinitiated\u003c/code\u003e for details. :issue:\u003ccode\u003e500\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePer RFC 6749 Section 3.3, the \u003ccode\u003escope\u003c/code\u003e parameter is now optional at both\nauthorization and token endpoints. \u003ccode\u003eclient.get_allowed_scope()\u003c/code\u003e is called\nto determine the default scope when omitted. :issue:\u003ccode\u003e845\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9, start support Python 3.14. :pr:\u003ccode\u003e850\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eAuthorizationServerMetadata.validate()\u003c/code\u003e to compose with RFC extension classes.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at=0\u003c/code\u003e being incorrectly treated as \u003ccode\u003eNone\u003c/code\u003e. :issue:\u003ccode\u003e530\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eResourceProtector\u003c/code\u003e decorator to be used without parentheses. :issue:\u003ccode\u003e604\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUpgrade Guide: :ref:\u003ccode\u003ejoserfc_upgrade\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 1.6.6\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Dec 12, 2025\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter, :pr:\u003ccode\u003e844\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix incorrect signature when \u003ccode\u003eContent-Type\u003c/code\u003e is x-www-form-urlencoded for OAuth 1.0 Client, :pr:\u003ccode\u003e778\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eexpires_in\u003c/code\u003e in \u003ccode\u003eOAuth2Token\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable, :pr:\u003ccode\u003e842\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAlways track \u003ccode\u003estate\u003c/code\u003e in session for OAuth client integrations.\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/authlib/authlib/commit/a769f343ae8d43236448e3e74445980861812e82\"\u003e\u003ccode\u003ea769f34\u003c/code\u003e\u003c/a\u003e chore: release 1.6.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/84f3fa2965a189c16528329e8cfe41d094008588\"\u003e\u003ccode\u003e84f3fa2\u003c/code\u003e\u003c/a\u003e fix: add EdDSA to default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/38e872a3f5b97d2658507acc8762a4e18adaa50e\"\u003e\u003ccode\u003e38e872a\u003c/code\u003e\u003c/a\u003e chore: release 1.6.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b87c32ed07b8ae7f805873e1c9cafd1016761df7\"\u003e\u003ccode\u003eb87c32e\u003c/code\u003e\u003c/a\u003e fix: remove \u0026quot;none\u0026quot; algorithm from default jwt instance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/bb7a315befbad333faf9a23ef574d6e3134a6774\"\u003e\u003ccode\u003ebb7a315\u003c/code\u003e\u003c/a\u003e chore: release 1.6.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/0a423d4638bed1c0fe4597b2296a85c5bb59fba2\"\u003e\u003ccode\u003e0a423d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/844\"\u003e#844\u003c/a\u003e from azmeuk/806-get-jwt-config-client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/2808378611dd6fb2532b189a9087877d8f0c0489\"\u003e\u003ccode\u003e2808378\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/714502a4738bc29f26eb245b0c66718d8536cdda\"\u003e\u003ccode\u003e714502a\u003c/code\u003e\u003c/a\u003e feat: get_jwt_config takes a client parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/260d04edee23d8470057ea659c16fb8a2c7b0dc2\"\u003e\u003ccode\u003e260d04e\u003c/code\u003e\u003c/a\u003e Fix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/eb37124bbbec6ccbfba3699d8960f9710d330ad8\"\u003e\u003ccode\u003eeb37124\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/778\"\u003e#778\u003c/a\u003e from shc261392/fix-httpx-oauth1-form-data-incorrect-s...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\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/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/36d6f3c091d84dc547019d773ab6e63a1cbc23af\"\u003e\u003ccode\u003e36d6f3c\u003c/code\u003e\u003c/a\u003e Update tox tests for Python 3.10 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/da0d33816ba5c5f8f72a380720ad054596867807\"\u003e\u003ccode\u003eda0d338\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1341\"\u003e#1341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/649b9bdf87f4f9d850b29819b14b847bd3b8f970\"\u003e\u003ccode\u003e649b9bd\u003c/code\u003e\u003c/a\u003e Add check for hardcoded passwords in dicts. (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1338\"\u003e#1338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/3c56109061524f5907cc4d475b7370bac47a451b\"\u003e\u003ccode\u003e3c56109\u003c/code\u003e\u003c/a\u003e Fix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1337\"\u003e#1337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b790ce22f0a69f53468c1755e9d37e6349a2c8c2\"\u003e\u003ccode\u003eb790ce2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1335\"\u003e#1335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/0b73bbe59642097050d5c698e55d13bae2c6b78c\"\u003e\u003ccode\u003e0b73bbe\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.36.2 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/db81e4db6cf73690fde8fa22d0847ff17b06b23c\"\u003e\u003ccode\u003edb81e4d\u003c/code\u003e\u003c/a\u003e 1.38.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6b1d48e6ac6a9fb9361371b933a4eeca10aa3bc0\"\u003e\u003ccode\u003e6b1d48e\u003c/code\u003e\u003c/a\u003e fix: error message for pyright executable fallback (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1723\"\u003e#1723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/49a0041a6c5bf2c5f2bc759fbefa54a8f5d4da8f\"\u003e\u003ccode\u003e49a0041\u003c/code\u003e\u003c/a\u003e add more quick fixes for specific error types (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1721\"\u003e#1721\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eeca15f7aa21fbfa031370e0fd5c9d6934ba7df2\"\u003e\u003ccode\u003eeeca15f\u003c/code\u003e\u003c/a\u003e fix: don't comment out return types in stub generation (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1724\"\u003e#1724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ba43b2d33259b4b576e2929a700b052f31d55334\"\u003e\u003ccode\u003eba43b2d\u003c/code\u003e\u003c/a\u003e show the default value from the implementation signature when displaying an o...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ecea0a681818fc8b90a1314b7d2f844fef8f53c0\"\u003e\u003ccode\u003eecea0a6\u003c/code\u003e\u003c/a\u003e 1.37.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/df279750472a016fae05feaaa9d0824724ad00e4\"\u003e\u003ccode\u003edf27975\u003c/code\u003e\u003c/a\u003e update badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/176bfb108a17b6c5a61119c3ee3e2e5d6470c8ed\"\u003e\u003ccode\u003e176bfb1\u003c/code\u003e\u003c/a\u003e fix $schema being reported as unrecognized setting in config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/206627d635c13cda872dd665cc9dd67452707749\"\u003e\u003ccode\u003e206627d\u003c/code\u003e\u003c/a\u003e 1.37.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/039f3be9c6d959ccfd54133b5ab3b1159d6763f6\"\u003e\u003ccode\u003e039f3be\u003c/code\u003e\u003c/a\u003e extract the infinite recursion prevention logic into a separate class since t...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.36.2...v1.38.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.4 to 4.14.3\n\nUpdates `billiard` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks by \u003ca href=\"https://github.com/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/439\"\u003ecelery/billiard#439\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/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.3...v4.2.4\"\u003ehttps://github.com/celery/billiard/compare/v4.2.3...v4.2.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/436\"\u003ecelery/billiard#436\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/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.2...v4.2.3\"\u003ehttps://github.com/celery/billiard/compare/v4.2.2...v4.2.3\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/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.4 - 2025-11-30\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.3 - 2025-11-16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\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/celery/billiard/commit/69c2f296c2b36622a90c548f26c940712cb9a1df\"\u003e\u003ccode\u003e69c2f29\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/973c773fee4ccd1ab1151d0801905176b284075d\"\u003e\u003ccode\u003e973c773\u003c/code\u003e\u003c/a\u003e Eliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/51153949934c247ac23de990eee4073adcf08083\"\u003e\u003ccode\u003e5115394\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/437\"\u003e#437\u003c/a\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/GrayGhostDev/ToolboxAI-Solutions/pull/1511","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrayGhostDev%2FToolboxAI-Solutions/issues/1511","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1511/packages"},{"uuid":"3881829355","node_id":"PR_kwDOJpUnI87AtFcc","number":122,"state":"closed","title":"Bump the poetry-dependencies group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-01T11:05:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T11:10:59.000Z","updated_at":"2026-03-01T11:05:23.000Z","time_to_close":2418862,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"poetry-dependencies","update_count":79,"packages":[{"name":"black","old_version":"25.9.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"coverage","old_version":"7.10.7","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"furo","old_version":"2025.9.25","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.13.3","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"sphinx-click","old_version":"6.1.0","new_version":"6.2.0","repository_url":"https://github.com/click-contrib/sphinx-click"},{"name":"matplotlib","old_version":"3.10.6","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"deptry","old_version":"0.23.1","new_version":"0.24.0","repository_url":"https://github.com/fpgmaas/deptry"},{"name":"pyarrow","old_version":"21.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pandas-stubs","old_version":"2.3.2.250926","new_version":"2.3.3.260113","repository_url":"https://github.com/pandas-dev/pandas-stubs"},{"name":"anyio","old_version":"4.11.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"async-lru","old_version":"2.0.5","new_version":"2.1.0","repository_url":"https://github.com/aio-libs/async-lru"},{"name":"beautifulsoup4","old_version":"4.14.2","new_version":"4.14.3"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2025.10.5","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"charset-normalizer","old_version":"3.4.3","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.17","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.19.1","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.60.1","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.16","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipykernel","old_version":"6.30.1","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"8.37.0","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"json5","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jupyter-client","old_version":"8.6.3","new_version":"8.8.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"jupyter-server-terminals","old_version":"0.5.3","new_version":"0.5.4","repository_url":"https://github.com/jupyter-server/jupyter_server_terminals"},{"name":"jupyterlab","old_version":"4.4.9","new_version":"4.5.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-widgets","old_version":"3.0.15","new_version":"3.0.16","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"lark","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mistune","old_version":"3.1.4","new_version":"3.2.0","repository_url":"https://github.com/lepture/mistune"},{"name":"nbclient","old_version":"0.10.2","new_version":"0.10.4","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbconvert","old_version":"7.16.6","new_version":"7.17.0","repository_url":"https://github.com/jupyter/nbconvert"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"numba","old_version":"0.62.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numexpr","old_version":"2.13.1","new_version":"2.14.1","repository_url":"https://github.com/pydata/numexpr"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.3.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"psutil","old_version":"7.1.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"roman-numerals-py","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"send2trash","old_version":"1.8.3","new_version":"2.1.0","repository_url":"https://github.com/arsenetar/send2trash"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"soupsieve","old_version":"2.8","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.48.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"types-pytz","old_version":"2025.2.0.20250809","new_version":"2025.2.0.20251108","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"20.34.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.5.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webcolors","old_version":"24.11.1","new_version":"25.10.0","repository_url":"https://github.com/ubernostrum/webcolors"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"widgetsnbextension","old_version":"4.0.14","new_version":"4.0.15"}],"path":null,"ecosystem":"pip"},"body":"Bumps the poetry-dependencies group with 75 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `25.9.0` | `26.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.13.2` |\n| [furo](https://github.com/pradyunsg/furo) | `2025.9.25` | `2025.12.19` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.13.3` | `0.14.14` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [sphinx-click](https://github.com/click-contrib/sphinx-click) | `6.1.0` | `6.2.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.6` | `3.10.8` |\n| [deptry](https://github.com/fpgmaas/deptry) | `0.23.1` | `0.24.0` |\n| [pyarrow](https://github.com/apache/arrow) | `21.0.0` | `23.0.0` |\n| [pandas-stubs](https://github.com/pandas-dev/pandas-stubs) | `2.3.2.250926` | `2.3.3.260113` |\n| [anyio](https://github.com/agronholm/anyio) | `4.11.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [async-lru](https://github.com/aio-libs/async-lru) | `2.0.5` | `2.1.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.2` | `4.14.3` |\n| [bleach](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.10.5` | `2026.1.4` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.3` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.3.0` | `8.3.1` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.17` | `1.8.20` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.19.1` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.1` | `4.61.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.16` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.30.1` | `7.1.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.37.0` | `8.38.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.7` | `8.1.8` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.12.1` | `0.13.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.6.3` | `8.8.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [jupyter-server-terminals](https://github.com/jupyter-server/jupyter_server_terminals) | `0.5.3` | `0.5.4` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.9` | `4.5.3` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.15` | `3.0.16` |\n| [lark](https://github.com/lark-parser/lark) | `1.3.0` | `1.3.1` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.1.4` | `3.2.0` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.2` | `0.10.4` |\n| [nbconvert](https://github.com/jupyter/nbconvert) | `7.16.6` | `7.17.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [numba](https://github.com/numba/numba) | `0.62.1` | `0.63.1` |\n| [numexpr](https://github.com/pydata/numexpr) | `2.13.1` | `2.14.1` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.3.0` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.5.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.1.0` | `7.2.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [roman-numerals-py](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| [send2trash](https://github.com/arsenetar/send2trash) | `1.8.3` | `2.1.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8` | `2.8.3` |\n| [starlette](https://github.com/Kludex/starlette) | `0.48.0` | `0.52.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [types-pytz](https://github.com/typeshed-internal/stub_uploader) | `2025.2.0.20250809` | `2025.2.0.20251108` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.40.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.34.0` | `20.36.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.5.3` |\n| [webcolors](https://github.com/ubernostrum/webcolors) | `24.11.1` | `25.10.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.14` | `4.0.15` |\n\n\nUpdates `black` from 25.9.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \u003ccode\u003eas\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\nmatching subdirectories (like the previous behavior did), and not just matching root\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \u003ccode\u003eas\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\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/psf/black/commit/6305bf1ae645ab7541be4f5028a86239316178eb\"\u003e\u003ccode\u003e6305bf1\u003c/code\u003e\u003c/a\u003e Prepare 2026.1.0 release (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e71305bee302f7f9016b228361e5ae69669dca7b\"\u003e\u003ccode\u003ee71305b\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 3.3.0 to 3.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4961\"\u003e#4961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/21a2a8c2b1d0c8d47bc00cc59591470f6a9e2307\"\u003e\u003ccode\u003e21a2a8c\u003c/code\u003e\u003c/a\u003e Fix Shutdown multiprocessing Manager in schedule_formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4952\"\u003e#4952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e3146cea4245fcee29d007cb45d9faaf63271586\"\u003e\u003ccode\u003ee3146ce\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4919\"\u003e#4919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/fe1fbc4fdfa03fa1d460f975b8aca77e4b4f1a4a\"\u003e\u003ccode\u003efe1fbc4\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4923\"\u003e#4923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b4b7fcfe00bb0d99322e07e87fc2f0992f7a4d8\"\u003e\u003ccode\u003e2b4b7fc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4922\"\u003e#4922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d745be69bfa9d85ec2ef6e5f9b7ec7e253b5e8ab\"\u003e\u003ccode\u003ed745be6\u003c/code\u003e\u003c/a\u003e docs: document --force-exclude for pre-commit workflows (\u003ca href=\"https://redirect.github.com/psf/black/issues/4957\"\u003e#4957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b41acd6ebbe76e18b49286166924f73f01c3fd02\"\u003e\u003ccode\u003eb41acd6\u003c/code\u003e\u003c/a\u003e Various CI and doc refactors (\u003ca href=\"https://redirect.github.com/psf/black/issues/4928\"\u003e#4928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6f43612766da4a2f275b575af0802c3e73b6ed83\"\u003e\u003ccode\u003e6f43612\u003c/code\u003e\u003c/a\u003e Handle pathspec v1 changes (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/200c550aff44372f801a6d826a361cb26f45a504\"\u003e\u003ccode\u003e200c550\u003c/code\u003e\u003c/a\u003e Bump furo from 2025.9.25 to 2025.12.19 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4933\"\u003e#4933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.9.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.10.7 to 7.13.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\u003c/a\u003e\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/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.10.7...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2025.9.25 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\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\u003eSee full diff in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\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/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.3.0 to 4.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\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/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.1 - 2025-12-16\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\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/pre-commit/pre-commit/commit/8a0630ca1aa7f6d5665effe674ebe2022af17919\"\u003e\u003ccode\u003e8a0630c\u003c/code\u003e\u003c/a\u003e v4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fcbc745744377ef2c9fe6a7e1a21c67d797933dc\"\u003e\u003ccode\u003efcbc745\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e from pre-commit/empty-setup-py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/51592eececd13b99c40ec477ad8f810799147227\"\u003e\u003ccode\u003e51592ee\u003c/code\u003e\u003c/a\u003e fix python local template when artifact dirs are present\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/67e8faf80baffcb4b79c31b89ca9a413a1cd6776\"\u003e\u003ccode\u003e67e8faf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3596\"\u003e#3596\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c251e6b6d011b3b262339dc8e109de29b0ff8db1\"\u003e\u003ccode\u003ec251e6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/98ccafa3ce42b846b9a9be9ed73fbbec7415496d\"\u003e\u003ccode\u003e98ccafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3593\"\u003e#3593\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/48953556d06f8cdb4248002c1a0044e69e0916b3\"\u003e\u003ccode\u003e4895355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2cedd58e691f4d3bc6ab266c7d7c28464c3502be\"\u003e\u003ccode\u003e2cedd58\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3588\"\u003e#3588\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/465192d7de58d569776eaaa818c94cb2b962d436\"\u003e\u003ccode\u003e465192d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fd42f96874279c4f65363bfea5238714419e54d7\"\u003e\u003ccode\u003efd42f96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3586\"\u003e#3586\u003c/a\u003e from pre-commit/zipapp-sha256-file-not-needed\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.3.0...v4.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.13.3 to 0.14.14\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.14.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\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-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\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.14.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\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-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8b2e7b36f246b990fe473a84eef25ff429e59ecf\"\u003e\u003ccode\u003e8b2e7b3\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22813\"\u003e#22813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4c7d1f50fd8d1baf06a3c8885ecd0ded0113d383\"\u003e\u003ccode\u003e4c7d1f5\u003c/code\u003e\u003c/a\u003e [ty] Infer \u003ccode\u003eTypedDict\u003c/code\u003e types with \u0026gt;=1 required key as being always truthy (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7de4341535ff2b299695335e0a7b9ebaf297348\"\u003e\u003ccode\u003eb7de434\u003c/code\u003e\u003c/a\u003e add CCfW hooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22803\"\u003e#22803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b912dfc8788f8f8c351767899df6b72ce3366352\"\u003e\u003ccode\u003eb912dfc\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1ff062d1cccb8025de184a55c6dfe469a4293249\"\u003e\u003ccode\u003e1ff062d\u003c/code\u003e\u003c/a\u003e [ty] Improve completion rankings for raise-from/except contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22775\"\u003e#22775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e408a51d24db2bca248bb90f2f7938f83efd22b\"\u003e\u003ccode\u003e7e408a5\u003c/code\u003e\u003c/a\u003e Update dependency wrangler to v4.59.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22793\"\u003e#22793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceb876b82300bd237d11e3eb77c46fcf3d3afe85\"\u003e\u003ccode\u003eceb876b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c5b4ee68c90faf0e609fa6553a171a7ba60ebdcb\"\u003e\u003ccode\u003ec5b4ee6\u003c/code\u003e\u003c/a\u003e [ty] Support solving generics involving PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22678\"\u003e#22678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b9a61293153f43df9963c727539309b76ac4756d\"\u003e\u003ccode\u003eb9a6129\u003c/code\u003e\u003c/a\u003e [ty] Improve support for kwarg splats in dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22781\"\u003e#22781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f516d47ceb7f6a0c3a95eaaa2c7451a32b5d7120\"\u003e\u003ccode\u003ef516d47\u003c/code\u003e\u003c/a\u003e Update contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.13.3...0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\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.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\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/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\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/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\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/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-click` from 6.1.0 to 6.2.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/e8eb75e292ff6df69230420d992a34e68a7385d0\"\u003e\u003ccode\u003ee8eb75e\u003c/code\u003e\u003c/a\u003e add release notes with reno\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/46f6445bb67c76f2a4b638f4003862ee85dafba1\"\u003e\u003ccode\u003e46f6445\u003c/code\u003e\u003c/a\u003e fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/722f4217c1bf6dfd68f9e2c26aa52d590973b11e\"\u003e\u003ccode\u003e722f421\u003c/code\u003e\u003c/a\u003e print \u0026quot;Usage\u0026quot; before printing the command usage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/ebc38179a0229435becdd64026fa88be7ab2d60c\"\u003e\u003ccode\u003eebc3817\u003c/code\u003e\u003c/a\u003e Fix readthedocs build (redux)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/9ee09f9d3252fd6e8bce9578eca82411e89c76e5\"\u003e\u003ccode\u003e9ee09f9\u003c/code\u003e\u003c/a\u003e Fix readthedocs build\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/click-contrib/sphinx-click/compare/6.1.0...6.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.6 to 3.10.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\u003c/li\u003e\n\u003cli\u003eBetter error handling for MacOS backend\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\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/matplotlib/matplotlib/commit/1392cbe3c79cdb93f9282747841d648770f60249\"\u003e\u003ccode\u003e1392cbe\u003c/code\u003e\u003c/a\u003e REL: v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0b9ebb35f8310f22eb7f932b2ae14befb1f40b6f\"\u003e\u003ccode\u003e0b9ebb3\u003c/code\u003e\u003c/a\u003e Doc release prep v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bc7b5c4377ce2544e8936255c51c1ff7cd0c5a85\"\u003e\u003ccode\u003ebc7b5c4\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.7-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/86b38d3f29aa2af2ddcbd1895433117caa0fba47\"\u003e\u003ccode\u003e86b38d3\u003c/code\u003e\u003c/a\u003e Github stats v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9512188e42f9d221f83869113c44f99fe1832a0f\"\u003e\u003ccode\u003e9512188\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30717\"\u003e#30717\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30714-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d300769285e2c920804134e40ec83837eabe16d8\"\u003e\u003ccode\u003ed300769\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30714\"\u003e#30714\u003c/a\u003e: FIX: Gracefully handle numpy arrays as input to check_in_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/799bc9561daea5b5578f888817cb45c9321a0463\"\u003e\u003ccode\u003e799bc95\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30711\"\u003e#30711\u003c/a\u003e from ngoldbaum/v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/134000ba19a4354da2ad1084627039e05c936754\"\u003e\u003ccode\u003e134000b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30697\"\u003e#30697\u003c/a\u003e from ngoldbaum/fix-plotting-on-worker-threads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5b8e219d70f1daa443330eb6a5a6211506b37362\"\u003e\u003ccode\u003e5b8e219\u003c/code\u003e\u003c/a\u003e TST: Run macosx backends in a subprocess\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/878e71a95006d3aec9505f3bd836968951fdd163\"\u003e\u003ccode\u003e878e71a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29810\"\u003e#29810\u003c/a\u003e: Declare free-threaded support in MacOS backend extension ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.6...v3.10.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `deptry` from 0.23.1 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fpgmaas/deptry/releases\"\u003edeptry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003ch4\u003ePython 3.9 support dropped\u003c/h4\u003e\n\u003cp\u003eSupport for Python 3.9 has been dropped, as it has reached its end of life.\u003c/p\u003e\n\u003ch4\u003ePyPy 3.10 support dropped, 3.11 added\u003c/h4\u003e\n\u003cp\u003eSupport for PyPy 3.10 has been dropped, since it is unsupported. We now only test against PyPy 3.11, and only publish wheels for this version.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub Actions annotations reporter (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1059\"\u003e#1059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support...\n\n_Description has been truncated_","html_url":"https://github.com/statisticsnorway/ssb-pre-system/pull/122","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/statisticsnorway%2Fssb-pre-system/issues/122","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/122/packages"},{"uuid":"3875334461","node_id":"PR_kwDOD-YBes7AX-5u","number":42,"state":"open","title":"Bump iniconfig from 2.1.0 to 2.3.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-01-30T11:45:20.000Z","updated_at":"2026-01-30T11:45:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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 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/Maxim-Doronin/openvino/pull/42","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maxim-Doronin%2Fopenvino/issues/42","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42/packages"},{"uuid":"3854485334","node_id":"PR_kwDOMftbFc6_Sm3X","number":190,"state":"closed","title":"Bump the py-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-02T04:30:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T04:37:31.000Z","updated_at":"2026-02-02T04:30:53.000Z","time_to_close":604401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":83,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.24","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.31.1","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"myst-parser","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.2","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.24` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.34` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.34` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `23.0.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.34` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.34` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.20` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.14` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.31.1` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `4.0.1` | `5.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.2` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.52.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.24\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3af1873c23374171e0bc9a6891a361221178fd8d\"\u003e\u003ccode\u003e3af1873\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3db4f00603a7e7a76ffc0838593db9656e72799e\"\u003e\u003ccode\u003e3db4f00\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/2c19a9fcf0f35398a280868073b4170c02f4ef5a\"\u003e\u003ccode\u003e2c19a9f\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/80d79654015909384fe93f268867f5dec1e58705\"\u003e\u003ccode\u003e80d7965\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/75d1e11e5a5e06d8dcc5637ea26091874275eb99\"\u003e\u003ccode\u003e75d1e11\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/a220ab958493ad5a52289d964546d66538ee7711\"\u003e\u003ccode\u003ea220ab9\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c48c8ab1a19bdf5f8b3510e9948016443eb7d2e0\"\u003e\u003ccode\u003ec48c8ab\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/39e70dfeaa3a5dad7c8c49d08c64b79bc299c58c\"\u003e\u003ccode\u003e39e70df\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/094e6fa721d66f284e1466e758e32120b8594ab7\"\u003e\u003ccode\u003e094e6fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/4cd22ade79f67568ad66b6d406882dcd02a6fa6c\"\u003e\u003ccode\u003e4cd22ad\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;UNION\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26039\"\u003e#26039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly pin chrono (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26051\"\u003e#26051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't run rust doctests (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26046\"\u003e#26046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26042\"\u003e#26042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIgnore very slow test (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26041\"\u003e#26041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Voultapher\"\u003e\u003ccode\u003e@​Voultapher\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/wtn\"\u003e\u003ccode\u003e@​wtn\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\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/pola-rs/polars/commit/bb79993c3aa91d0db7d20be8f75c8075cad97067\"\u003e\u003ccode\u003ebb79993\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26078\"\u003e#26078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/26a9d097af5ea7d35f72bb8514ab990ddbce4796\"\u003e\u003ccode\u003e26a9d09\u003c/code\u003e\u003c/a\u003e chore: Mark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/451f247ba33506c9822478d0409a5075fec5797c\"\u003e\u003ccode\u003e451f247\u003c/code\u003e\u003c/a\u003e refactor(rust): Simplify \u003ccode\u003ePlPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26053\"\u003e#26053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b532aad910b0fe065b9fbe648944f3a580d3d104\"\u003e\u003ccode\u003eb532aad\u003c/code\u003e\u003c/a\u003e docs: Clarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/707796731ab7cf51f296a9b56a0231a5537e4259\"\u003e\u003ccode\u003e7077967\u003c/code\u003e\u003c/a\u003e fix: Optimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/44c139746390a0b81b3e908a8a6529cc6efdea1e\"\u003e\u003ccode\u003e44c1397\u003c/code\u003e\u003c/a\u003e fix: CPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/35ec39865a1952f60f46d17e461974881844b9c1\"\u003e\u003ccode\u003e35ec398\u003c/code\u003e\u003c/a\u003e chore: Update breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84fa66381626dbd826e2d5a663285fb193356d64\"\u003e\u003ccode\u003e84fa663\u003c/code\u003e\u003c/a\u003e fix(python): Propagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e9e20e468cb84f966eed1e37a7b23afaf842e88f\"\u003e\u003ccode\u003ee9e20e4\u003c/code\u003e\u003c/a\u003e fix: Fix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b0fdbd34d430d934bda9a4ca3f75e136223bd95b\"\u003e\u003ccode\u003eb0fdbd3\u003c/code\u003e\u003c/a\u003e chore: Fix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.1\"\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 `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\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\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9a285e6beab78c1f4c97047674ec09ac5451c4d1\"\u003e\u003ccode\u003e9a285e6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/29574158e22c3b2d6ca044eef1dc054d28d73485\"\u003e\u003ccode\u003e2957415\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8e1fd2e6e5c1fd6236cacf2dc9064d55d8baf07b\"\u003e\u003ccode\u003e8e1fd2e\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/9cadce52dae6e58e450a9ac0745a721dda8a4044\"\u003e\u003ccode\u003e9cadce5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee24f15c3013be4f4c6e76bfbc948b910e6f8f35\"\u003e\u003ccode\u003eee24f15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b0f2cf318d9bef8eaf3f11cd81b22ce67810ea82\"\u003e\u003ccode\u003eb0f2cf3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6e690ed2966406d4b53532a44e70c93370368ae6\"\u003e\u003ccode\u003e6e690ed\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/b84ec5ebd8880b77e998bfdd28984f214c3f1fa3\"\u003e\u003ccode\u003eb84ec5e\u003c/code\u003e\u003c/a\u003e Add BOTOCORE_TCP_KEEPALIVE environment variable documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4705\"\u003e#4705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/36cebd34052db2fc7449b85ac04f903fb40f8b2f\"\u003e\u003ccode\u003e36cebd3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4d10440677e98c5c15fb6c84cc605bd7401fd74\"\u003e\u003ccode\u003ed4d1044\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d52e6ce4372810dc3a0d6701b366f54add0aedae\"\u003e\u003ccode\u003ed52e6ce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fce5268f1cd4063f30e3faec44da7efa309cae5f\"\u003e\u003ccode\u003efce5268\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/45e43f9baa8c57d13eb75d7566f1401366a1a188\"\u003e\u003ccode\u003e45e43f9\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b9ed58fa2f31170724538f6ed86e8cbf833de8fd\"\u003e\u003ccode\u003eb9ed58f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/48062d233b8173af5af60afb85443e04c6520146\"\u003e\u003ccode\u003e48062d2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8eb5ab6cd38ba8d94d938fac2e6086bd918760dc\"\u003e\u003ccode\u003e8eb5ab6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05b651e910c4b59a971a2566afb4b82a51fb00fc\"\u003e\u003ccode\u003e05b651e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/aba67690e5aa14f58083dfa168d7fc09681c884a\"\u003e\u003ccode\u003eaba6769\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3549e0136b656df25e985bdb85233f95da5851d3\"\u003e\u003ccode\u003e3549e01\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0847d5e023fd0f7d0e19a154ee22a46e8f56bc38\"\u003e\u003ccode\u003e0847d5e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\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.2 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\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\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.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.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.19 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 `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 `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `jmespath` from 1.0.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jmespath/jmespath.py/blob/develop/CHANGELOG.rst\"\u003ejmespath's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix concurrency issue with cache\n(\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12-3.14 (\u003ccode\u003epr [#331](https://github.com/jmespath/jmespath.py/issues/331) \u0026lt;https://github.com/jmespath/jmespath.py/pull/331\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.7-3.8 (\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\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/jmespath/jmespath.py/commit/6ff419a8b171d055a9bfc6904605bceb8b7a80ef\"\u003e\u003ccode\u003e6ff419a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.1.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/17e964f81911b49babb33e8697b34a31f869420f\"\u003e\u003ccode\u003e17e964f\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/5ce13aab582ba08b07e1c615feeb3654a7cd8d62\"\u003e\u003ccode\u003e5ce13aa\u003c/code\u003e\u003c/a\u003e Merge branch 'v1.1.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/d8f0457f8f962724b2c1ae12f79d3ba65edf4d82\"\u003e\u003ccode\u003ed8f0457\u003c/code\u003e\u003c/a\u003e Revert versions back to current version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/8cb30825f62675f6018b812faa9e2c9566eba2e3\"\u003e\u003ccode\u003e8cb3082\u003c/code\u003e\u003c/a\u003e 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6e379910c1bc0ec0339b05da73e32cad9d3dddbc\"\u003e\u003ccode\u003e6e37991\u003c/code\u003e\u003c/a\u003e Update permissions in codeql.yml workflow (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/141734d98ac79c165ec31aa1c18dd29efc45ac49\"\u003e\u003ccode\u003e141734d\u003c/code\u003e\u003c/a\u003e Bring .github settings up-to-date (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/07e30cf011056386c3dade2502a53eb2b1d4b3c1\"\u003e\u003ccode\u003e07e30cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/337\"\u003e#337\u003c/a\u003e from nateprewitt/python_changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/9170711017c2be9e3057a384e4a6061ef71bdc6f\"\u003e\u003ccode\u003e9170711\u003c/code\u003e\u003c/a\u003e Add missing changelog entries for Python support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/cdb9327fd597dda1aff703e6e5b98d79503c6f4e\"\u003e\u003ccode\u003ecdb9327\u003c/code\u003e\u003c/a\u003e Fix file encoding for Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jmespath/jmespath.py/compare/1.0.1...1.1.0\"\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 3.0.0 to 4.0.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.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 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/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.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/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 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/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table 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/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser 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/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter 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/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType 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/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group 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/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action 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/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact 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/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script 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/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims 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/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing 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/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov 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/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build 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/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs 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/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs 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/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme 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/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon 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/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build 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/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos 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/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\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/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.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\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/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.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/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak i...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/190/packages"},{"uuid":"3853936727","node_id":"PR_kwDOEkpJIs6_Q62l","number":205,"state":"open","title":"Bump the dependencies group across 1 directory with 65 updates","user":"dependabot[bot]","labels":["skip-changelog","dependabot-deps-updates"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T22:13:17.000Z","updated_at":"2026-02-02T00:01:30.944Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":65,"packages":[{"name":"ansible-compat","old_version":"24.10.0","new_version":"25.12.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"argparse-manpage","old_version":"4.6","new_version":"4.7","repository_url":"https://github.com/praiskup/argparse-manpage"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"backrefs","old_version":"5.8","new_version":"6.1","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bracex","old_version":"2.5.post1","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"cachetools","old_version":"6.0.0","new_version":"6.2.5","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.6.15","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"45.0.4","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"griffe","old_version":"1.7.3","new_version":"1.15.0","repository_url":"https://github.com/mkdocstrings/griffe"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.7.0","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.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipython","old_version":"8.18.1","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"markdown","old_version":"3.8","new_version":"3.10.1","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":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mkdocs-autorefs","old_version":"1.4.2","new_version":"1.4.3","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"mkdocs-material","old_version":"9.6.14","new_version":"9.7.1","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocstrings","old_version":"0.29.1","new_version":"1.0.2","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"1.16.12","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/python"},{"name":"molecule","old_version":"6.0.3","new_version":"25.12.0","repository_url":"https://github.com/ansible-community/molecule"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"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.1","new_version":"7.0.3"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.15","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pyproject-api","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-plus","old_version":"0.7.0","new_version":"0.8.1","repository_url":"https://github.com/pytest-dev/pytest-plus"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"pytest-xdist","old_version":"3.7.0","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"setproctitle","old_version":"1.3.6","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcmatch","old_version":"10.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.3.5","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 65 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.10.0` | `25.12.0` |\n| [argparse-manpage](https://github.com/praiskup/argparse-manpage) | `4.6` | `4.7` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `5.8` | `6.1` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5.post1` | `2.6` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.0.0` | `6.2.5` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.4` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [griffe](https://github.com/mkdocstrings/griffe) | `1.7.3` | `1.15.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.7.0` | `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.1.0` | `2.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `9.9.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8` | `3.10.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.2` | `1.4.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.4.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.14` | `9.7.1` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `0.29.1` | `1.0.2` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.16.12` | `2.0.1` |\n| [molecule](https://github.com/ansible-community/molecule) | `6.0.3` | `25.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.1` | `7.0.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.15` | `10.20.1` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.9.1` | `1.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-plus](https://github.com/pytest-dev/pytest-plus) | `0.7.0` | `0.8.1` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.7.0` | `3.8.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.30.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.6` | `1.3.7` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `10.0` | `10.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.3.5` |\n\n\nUpdates `ansible-compat` from 24.10.0 to 25.12.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\u003ev25.12.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.11.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate sonar-project.properties configuration (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/536\"\u003e#536\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/537\"\u003e#537\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tell uv to use unreleased ansible-core when running with py314 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/535\"\u003e#535\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/534\"\u003e#534\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.2\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: add support for python 3.14 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/533\"\u003e#533\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove tox.ini and adopt pep-735 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/526\"\u003e#526\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\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/532\"\u003e#532\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: hooks update (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/531\"\u003e#531\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/530\"\u003e#530\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/529\"\u003e#529\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/527\"\u003e#527\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: configure renovate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/524\"\u003e#524\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update hooks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/525\"\u003e#525\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/515\"\u003e#515\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e behaviour for \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/520\"\u003e#520\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/507\"\u003e#507\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump markdown-exec from 1.10.3 to 1.11.0 in /.config in the dependencies group (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/506\"\u003e#506\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the dependencies group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/505\"\u003e#505\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\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/ansible/ansible-compat/commit/601b6905c7c7819efb1f2c820a853827b835ec4f\"\u003e\u003ccode\u003e601b690\u003c/code\u003e\u003c/a\u003e Add platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/f8de21d2a42ba53679a6baba96773249b5205174\"\u003e\u003ccode\u003ef8de21d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/bc972b8146943335a592600c59f1a03d3979cedf\"\u003e\u003ccode\u003ebc972b8\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/2a54adab4035b398a0bba671da981816cbf3b8f9\"\u003e\u003ccode\u003e2a54ada\u003c/code\u003e\u003c/a\u003e chore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/384ce35dbf27ca74b0f92b751b93c25633e2d8d4\"\u003e\u003ccode\u003e384ce35\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/4900c15e756d60c214fb059cf735f5d34770731c\"\u003e\u003ccode\u003e4900c15\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/523a99d720a809a346a55474fa1deaaaa78ef8da\"\u003e\u003ccode\u003e523a99d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/77ff6e6bab69662edc408d3fb4e1134c4ce69e81\"\u003e\u003ccode\u003e77ff6e6\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/44a2e5c015c003712b2aea4ee43dde012507c5b1\"\u003e\u003ccode\u003e44a2e5c\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/b4dc1bb2583c23ceb221f906fe3352c943cafd56\"\u003e\u003ccode\u003eb4dc1bb\u003c/code\u003e\u003c/a\u003e Add finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.10.0...v25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argparse-manpage` from 4.6 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/praiskup/argparse-manpage/releases\"\u003eargparse-manpage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eargparse-manpage v4.7\u003c/h2\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\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/praiskup/argparse-manpage/blob/main/NEWS\"\u003eargparse-manpage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cpre\u003e\u003ccode\u003e\nWARNING: The 'build_manpage' setup.py command will be removed v5\nWARNING: We'll drop the Python 2.7 support in v5\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.6\n\u003cul\u003e\n\u003cli\u003eFix the build against Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.5\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWe newly provide \u003ccode\u003ebuild_manpages.build_py\u003c/code\u003e and \u003ccode\u003ebuild_manpages.install\u003c/code\u003e\ncommand classes that are re-usable from \u003ccode\u003epyproject.toml\u003c/code\u003e.  No need to\nprovide \u003ccode\u003esetup.py\u003c/code\u003e because of \u003ccode\u003eargparse-manpage\u003c/code\u003e.  Solved issue#85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.4\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eprog=\u003c/code\u003e specifier (in setup.py/setup.cfg/pyproject.toml) is now\u003cbr /\u003e\nbetter handled so it doesn't conflict with ArgumentParser(prog=..).\u003cbr /\u003e\nFixes \u003ca href=\"https://redirect.github.com/praiskup/argparse-manpage/issues/79\"\u003epraiskup/argparse-manpage#79\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNews in v4.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe pyproject.toml parsing feature now depends on the python3-tomli library\u003cbr /\u003e\ninstead of python-toml for \u0026quot;python_environment \u0026gt;3, \u0026lt;=3.10\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pyproject.toml specification of manpages added.\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/praiskup/argparse-manpage/commit/7883becca340aa3ea124143e032848a7b2bdf84b\"\u003e\u003ccode\u003e7883bec\u003c/code\u003e\u003c/a\u003e Release v4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/765389ed4ee835c09451823d7fbfe22b0dc1674a\"\u003e\u003ccode\u003e765389e\u003c/code\u003e\u003c/a\u003e Move the SOURCE_DATE_EPOCH hack on one place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/a06ed9c1f03360f8089819c8e845cd670687eb64\"\u003e\u003ccode\u003ea06ed9c\u003c/code\u003e\u003c/a\u003e ci: fix RPM build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/c985432ee15824c43c75548c7ec1bd6f105a7f22\"\u003e\u003ccode\u003ec985432\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings for datetime and setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/306658941368ff0c2dfe2e4fa29b889fb5bbeb2b\"\u003e\u003ccode\u003e3066589\u003c/code\u003e\u003c/a\u003e ci: fedora-tox update list of environments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/b3a2c50e2abc47bd822d848864a80e35251a3147\"\u003e\u003ccode\u003eb3a2c50\u003c/code\u003e\u003c/a\u003e ci: enable ruff \u0026amp; bump deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/6dc54a5272e70b081af728958fd7554a6b0372f3\"\u003e\u003ccode\u003e6dc54a5\u003c/code\u003e\u003c/a\u003e Fix compatibility with newer setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/29f89bba536cf28f6ed66721367ff2ee3f6209b7\"\u003e\u003ccode\u003e29f89bb\u003c/code\u003e\u003c/a\u003e Fix some comments about sys.argv alteration for usage message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/ade76cc8ef49ec804955c6b4027dbae52d482034\"\u003e\u003ccode\u003eade76cc\u003c/code\u003e\u003c/a\u003e Use sys.stdout instead of /dev/stdout\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/praiskup/argparse-manpage/compare/v4.6...v4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `backrefs` from 5.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Include Unicode 17 zip for early Python 3.15 usage, though Python 3.15 functionality is not guaranteed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues with regex imports in later versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a regression that created an ASCII binary property that would override the ASCII block property.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: POSIX character classes will now always use POSIX compatibility rules instead of Unicode standard rules,\nif any are specified in the Unicode specification. The affected character classes are: \u003ccode\u003e[[:alnum:]]\u003c/code\u003e, \u003ccode\u003e[[:digit:]]\u003c/code\u003e,\n\u003ccode\u003e[[:xdigit:]]\u003c/code\u003e, and  \u003ccode\u003e[[:punct:]]\u003c/code\u003e. To explicitly use standard Unicode rules for these compatibility properties, use\nthe Unicode property form instead: \u003ccode\u003e[\\p{Alnum}]\u003c/code\u003e, \u003ccode\u003e[\\p{Digit}]\u003c/code\u003e, \u003ccode\u003e[\\p{Punct}]\u003c/code\u003e, or \u003ccode\u003e[\\p{XDigit}]\u003c/code\u003e. This has changed\nto ensure no confusion for users expecting compatible POSIX style character class properties.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Scoped ASCII/Unicode flags (\u003ccode\u003e(?a:pattern)\u003c/code\u003e/\u003ccode\u003e(?u:pattern)\u003c/code\u003e) should be respected for Unicode properties in\n\u003ccode\u003ebre\u003c/code\u003e and will ensure ASCII or Unicode range if used.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues related to detecting disabled scoped flags.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eENHANCE\u003c/strong\u003e: Switch to deploying with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\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/backrefs/commit/da5453e08f49292b8cc2acab099816819de6c56e\"\u003e\u003ccode\u003eda5453e\u003c/code\u003e\u003c/a\u003e Remove build badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/30c281210b1dd417ccb7eb3f8e009acf49aad923\"\u003e\u003ccode\u003e30c2812\u003c/code\u003e\u003c/a\u003e Update docs to use zensical (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/e66f6c4ce60f847680e6c604ec17df6caad538cc\"\u003e\u003ccode\u003ee66f6c4\u003c/code\u003e\u003c/a\u003e Fix import of regex stuff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/12062282532c41f94fabff589c82db00b86def86\"\u003e\u003ccode\u003e1206228\u003c/code\u003e\u003c/a\u003e Include Unicode 17 zip for Python 3.15 early access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/23738f0d07dcc57c4ca863e412aef63be0060fe5\"\u003e\u003ccode\u003e23738f0\u003c/code\u003e\u003c/a\u003e Fix codec warning is Unicode download script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/63f8a4b14750828b7c1e385844fd36f6f89859e4\"\u003e\u003ccode\u003e63f8a4b\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7f4bf611e6e7fcc2aa4e0eba2872b5f51b7fc908\"\u003e\u003ccode\u003e7f4bf61\u003c/code\u003e\u003c/a\u003e Rework POSIX alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/956df5f387f1958110e5a7cf2a98d42a8309d9b6\"\u003e\u003ccode\u003e956df5f\u003c/code\u003e\u003c/a\u003e Fix ASCII block regression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7a948f083c3c87114a8dd87c95dff1893f3af82a\"\u003e\u003ccode\u003e7a948f0\u003c/code\u003e\u003c/a\u003e Clean up code and add more comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/9b2e406be36c1e0fc72651adbc7d2d63c4151483\"\u003e\u003ccode\u003e9b2e406\u003c/code\u003e\u003c/a\u003e Add more flag tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/5.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bracex` from 2.5.post1 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/bracex/releases\"\u003ebracex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6\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\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/bracex/commit/6d109c55372f0d5086adb7cf84a951cc06391a69\"\u003e\u003ccode\u003e6d109c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing and support for Python 3.14 (\u003ca href=\"https://redirect.github.com/facelessuser/bracex/issues/44\"\u003e#44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/c14d46fb495a8fdcd0ec51d4dd42aa587807407d\"\u003e\u003ccode\u003ec14d46f\u003c/code\u003e\u003c/a\u003e Add security policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/14645af4bf4de0e1abe4fd6c29bf98871f549273\"\u003e\u003ccode\u003e14645af\u003c/code\u003e\u003c/a\u003e Typos: remove duplicate words\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/bracex/compare/2.5.post1...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.0.0 to 6.2.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.2.5 (2026-01-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003elock\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd test cases for cache stampede scenarios.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.3 (2025-12-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003econdition\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor style and readability improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.2 (2025-11-13)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor improvements from GitHub Copilot code review.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.1 (2025-10-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ev6.2.0 (2025-08-25)\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/tkem/cachetools/commit/7158a30fa78b601f8d7958085bd2c0faaa045823\"\u003e\u003ccode\u003e7158a30\u003c/code\u003e\u003c/a\u003e Release v6.2.5.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9e3e267692980e99123506b63a156f999cd1278\"\u003e\u003ccode\u003ec9e3e26\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/379\"\u003e#379\u003c/a\u003e: Improve \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e example by using a lock.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/d99c023ad24c831638a321c0314f8ac24d23751f\"\u003e\u003ccode\u003ed99c023\u003c/code\u003e\u003c/a\u003e Bump copyright year.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/5a87ee037cfab209b0e9ad7c30bf6c9bdc2b3e97\"\u003e\u003ccode\u003e5a87ee0\u003c/code\u003e\u003c/a\u003e Add test cases for cache stampede scenarios.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/2e166d1348fe2e6e0e05aa68760687660034e6b6\"\u003e\u003ccode\u003e2e166d1\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9c9f9e5843f24580f957d29ce09bef214037896c\"\u003e\u003ccode\u003e9c9f9e5\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.5.1 to 5.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b8bec4af4a94a78306a2076384ccfd48b8c2e056\"\u003e\u003ccode\u003eb8bec4a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/345\"\u003e#345\u003c/a\u003e: Add GitHub pull request template.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9354683857b10b5e00cb93d06f7549ac8344fc0\"\u003e\u003ccode\u003ec935468\u003c/code\u003e\u003c/a\u003e Release v6.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/94d1099e6e79d34c436dc9f5d1cc039bcbf76738\"\u003e\u003ccode\u003e94d1099\u003c/code\u003e\u003c/a\u003e Prepare v6.2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.0.0...v6.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.6.15 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 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/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\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.2 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\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\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.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 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/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 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/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\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/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.9.1 to 7.13.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\u003c/a\u003e\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/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.9.1...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.4 to 46.0.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.4...46.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.9 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"...\n\n_Description has been truncated_","html_url":"https://github.com/pycontribs/subprocess-tee/pull/205","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pycontribs%2Fsubprocess-tee/issues/205","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/205/packages"}],"issue_packages":[{"old_version":"2.0.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-05-26T23:33:44.000Z","version_change":"2.0.0 → 2.3.0","issue":{"uuid":"4528230982","node_id":"PR_kwDOSn3wsM7fnM-p","number":5,"state":"open","title":"Bump the minor-update group with 145 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-26T23:33:44.000Z","updated_at":"2026-05-26T23:33:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-update","update_count":145,"packages":[{"name":"regex","old_version":"2026.2.28","new_version":"2026.5.9","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"transformers","old_version":"5.5.3","new_version":"5.9.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.12.0","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"prometheus-client","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"lark","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"filelock","old_version":"3.16.1","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"opentelemetry-sdk","old_version":"1.35.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-api","old_version":"1.35.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"tblib","old_version":"3.1.0","new_version":"3.2.2","repository_url":"https://github.com/ionelmc/python-tblib"},{"name":"absl-py","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/abseil/abseil-py"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.6.2.post1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argcomplete","old_version":"3.5.1","new_version":"3.6.3","repository_url":"https://github.com/kislyuk/argcomplete"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"audioread","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/beetbox/audioread"},{"name":"azure-core","old_version":"1.38.2","new_version":"1.41.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.29.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"blobfile","old_version":"3.0.0","new_version":"3.2.0","repository_url":"https://github.com/blobfile/blobfile"},{"name":"bm25s","old_version":"0.2.13","new_version":"0.3.9","repository_url":"https://github.com/xhluca/bm25s"},{"name":"boto3","old_version":"1.35.57","new_version":"1.43.15","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.57","new_version":"1.43.15","repository_url":"https://github.com/boto/botocore"},{"name":"click","old_version":"8.1.7","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.10.6","new_version":"7.14.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cramjam","old_version":"2.9.0","new_version":"2.11.0","repository_url":"https://github.com/milesgranger/pyrus-cramjam"},{"name":"cuda-bindings","old_version":"13.0.3","new_version":"13.2.0","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-pathfinder","old_version":"1.3.3","new_version":"1.5.4","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-toolkit","old_version":"13.0.2","new_version":"13.2.1"},{"name":"datamodel-code-generator","old_version":"0.26.3","new_version":"0.58.0","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"dataproperty","old_version":"1.0.1","new_version":"1.1.1","repository_url":"https://github.com/thombashi/DataProperty"},{"name":"decorator","old_version":"5.1.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dill","old_version":"0.3.8","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"einx","old_version":"0.3.0","new_version":"0.4.3","repository_url":"https://github.com/fferflo/einx"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastsafetensors","old_version":"0.2.2","new_version":"0.3.2","repository_url":"https://github.com/foundation-model-stack/fastsafetensors"},{"name":"fonttools","old_version":"4.55.0","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"google-api-core","old_version":"2.24.2","new_version":"2.30.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth","old_version":"2.40.2","new_version":"2.53.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"google-cloud-core","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-storage","old_version":"3.4.0","new_version":"3.10.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"google-crc32c","old_version":"1.7.1","new_version":"1.8.0","repository_url":"https://github.com/googleapis/python-crc32c"},{"name":"google-resumable-media","old_version":"2.7.2","new_version":"2.9.0","repository_url":"https://github.com/googleapis/google-resumable-media-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.3","new_version":"3.5.1","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-reflection","old_version":"1.78.0","new_version":"1.80.0"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"harfile","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/schemathesis/harfile"},{"name":"hf-xet","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"hiredis","old_version":"3.0.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"huggingface-hub","old_version":"1.10.2","new_version":"1.16.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"humanize","old_version":"4.11.0","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.153.0","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"hypothesis-graphql","old_version":"0.11.1","new_version":"0.12.0","repository_url":"https://github.com/Stranger6667/hypothesis-graphql"},{"name":"idna","old_version":"3.10","new_version":"3.16","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/nucleic/kiwi"},{"name":"lazy-loader","old_version":"0.4","new_version":"0.5","repository_url":"https://github.com/scientific-python/lazy-loader"},{"name":"librosa","old_version":"0.10.2.post1","new_version":"0.11.0","repository_url":"https://github.com/librosa/librosa"},{"name":"matplotlib","old_version":"3.9.2","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.36.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"mteb","old_version":"2.8.3","new_version":"2.12.30","repository_url":"https://github.com/embeddings-benchmark/mteb"},{"name":"multidict","old_version":"6.1.0","new_version":"6.7.1","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":"networkx","old_version":"3.2.1","new_version":"3.4.2","repository_url":"https://github.com/networkx/networkx"},{"name":"nvidia-cublas","old_version":"13.1.0.3","new_version":"13.5.1.27"},{"name":"nvidia-cuda-cupti","old_version":"13.0.85","new_version":"13.3.35"},{"name":"nvidia-cuda-nvrtc","old_version":"13.0.88","new_version":"13.3.33"},{"name":"nvidia-cuda-runtime","old_version":"13.0.96","new_version":"13.3.29"},{"name":"nvidia-cudnn-cu13","old_version":"9.19.0.56","new_version":"9.22.0.52"},{"name":"nvidia-cufft","old_version":"12.0.0.61","new_version":"12.3.0.29"},{"name":"nvidia-cufile","old_version":"1.15.1.6","new_version":"1.18.0.66"},{"name":"nvidia-cusolver","old_version":"12.0.4.66","new_version":"12.2.2.18"},{"name":"nvidia-cusparse","old_version":"12.6.3.3","new_version":"12.8.1.7"},{"name":"nvidia-cusparselt-cu13","old_version":"0.8.0","new_version":"0.9.1"},{"name":"nvidia-nccl-cu13","old_version":"2.28.9","new_version":"2.30.4"},{"name":"nvidia-nvjitlink","old_version":"13.0.88","new_version":"13.3.33"},{"name":"nvidia-nvshmem-cu13","old_version":"3.4.5","new_version":"3.6.5"},{"name":"nvidia-nvtx","old_version":"13.0.85","new_version":"13.3.29"},{"name":"opentelemetry-exporter-prometheus","old_version":"0.56b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.35.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.56b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pathvalidate","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/thombashi/pathvalidate"},{"name":"peft","old_version":"0.18.1","new_version":"0.19.1","repository_url":"https://github.com/huggingface/peft"},{"name":"perceptron","old_version":"0.1.4","new_version":"0.3.5","repository_url":"https://github.com/perceptron-ai-inc/perceptron"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.9.6","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":"polars","old_version":"1.29.0","new_version":"1.41.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"pooch","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/fatiando/pooch"},{"name":"propcache","old_version":"0.2.0","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.28.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pycryptodomex","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.41.1","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-extra-types","old_version":"2.10.5","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pygments","old_version":"2.18.0","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.2.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pystemmer","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/snowballstem/pystemmer"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-subtests","old_version":"0.14.1","new_version":"0.15.0","repository_url":"https://github.com/pytest-dev/pytest-subtests"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"python-rapidjson","old_version":"1.20","new_version":"1.23","repository_url":"https://github.com/python-rapidjson/python-rapidjson"},{"name":"rapidfuzz","old_version":"3.12.1","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.35.1","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"responses","old_version":"0.25.3","new_version":"0.26.1","repository_url":"https://github.com/getsentry/responses"},{"name":"rpds-py","old_version":"0.20.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"s3transfer","old_version":"0.10.3","new_version":"0.17.1","repository_url":"https://github.com/boto/s3transfer"},{"name":"sacrebleu","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/mjpost/sacrebleu"},{"name":"scikit-learn","old_version":"1.5.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.13.1","new_version":"1.15.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"5.2.0","new_version":"5.5.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.6.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tabulate","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/astanin/python-tabulate"},{"name":"tensorizer","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/coreweave/tensorizer"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"triton","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/triton-lang/triton"},{"name":"tritonclient","old_version":"2.64.0","new_version":"2.68.0","repository_url":"https://github.com/triton-inference-server/client"},{"name":"typer","old_version":"0.15.2","new_version":"0.26.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.48.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"vector-quantize-pytorch","old_version":"1.21.2","new_version":"1.29.1","repository_url":"https://github.com/lucidrains/vector-quantizer-pytorch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.7.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.7.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yarl","old_version":"1.17.1","new_version":"1.24.2","repository_url":"https://github.com/aio-libs/yarl"},{"name":"tpu-inference","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/vllm-project/tpu-inference"},{"name":"conch-triton-kernels","old_version":"1.2.1","new_version":"1.3","repository_url":"https://github.com/stackav-oss/conch"},{"name":"helion","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/pytorch/helion"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-update group with 145 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.5.9` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| [transformers](https://github.com/huggingface/transformers) | `5.5.3` | `5.9.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.0` | `2.13.4` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.0` | `0.25.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` |\n| [lark](https://github.com/lark-parser/lark) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.16.1` | `3.29.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.42.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.42.1` |\n| [tblib](https://github.com/ionelmc/python-tblib) | `3.1.0` | `3.2.2` |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.4.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.4` |\n| [anyio](https://github.com/agronholm/anyio) | `4.6.2.post1` | `4.13.0` |\n| [argcomplete](https://github.com/kislyuk/argcomplete) | `3.5.1` | `3.6.3` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [audioread](https://github.com/beetbox/audioread) | `3.0.1` | `3.1.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.29.0` |\n| [blobfile](https://github.com/blobfile/blobfile) | `3.0.0` | `3.2.0` |\n| [bm25s](https://github.com/xhluca/bm25s) | `0.2.13` | `0.3.9` |\n| [boto3](https://github.com/boto/boto3) | `1.35.57` | `1.43.15` |\n| [botocore](https://github.com/boto/botocore) | `1.35.57` | `1.43.15` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.4.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.6` | `7.14.1` |\n| [cramjam](https://github.com/milesgranger/pyrus-cramjam) | `2.9.0` | `2.11.0` |\n| [cuda-bindings](https://github.com/NVIDIA/cuda-python) | `13.0.3` | `13.2.0` |\n| [cuda-pathfinder](https://github.com/NVIDIA/cuda-python) | `1.3.3` | `1.5.4` |\n| [cuda-toolkit](https://developer.nvidia.com/cuda-toolkit) | `13.0.2` | `13.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.26.3` | `0.58.0` |\n| [dataproperty](https://github.com/thombashi/DataProperty) | `1.0.1` | `1.1.1` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.3.1` |\n| [dill](https://github.com/uqfoundation/dill) | `0.3.8` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [einx](https://github.com/fferflo/einx) | `0.3.0` | `0.4.3` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastsafetensors](https://github.com/foundation-model-stack/fastsafetensors) | `0.2.2` | `0.3.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.55.0` | `4.63.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.5.0` | `1.8.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.24.2` | `2.30.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.2` | `2.53.0` |\n| [google-cloud-core](https://github.com/googleapis/google-cloud-python) | `2.4.3` | `2.6.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.4.0` | `3.10.1` |\n| [google-crc32c](https://github.com/googleapis/python-crc32c) | `1.7.1` | `1.8.0` |\n| [google-resumable-media](https://github.com/googleapis/google-resumable-media-python) | `2.7.2` | `2.9.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.3` | `3.5.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-reflection](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [harfile](https://github.com/schemathesis/harfile) | `0.3.0` | `0.4.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.4.3` | `1.5.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.0.0` | `3.3.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.10.2` | `1.16.4` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.11.0` | `4.15.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.153.0` |\n| [hypothesis-graphql](https://github.com/Stranger6667/hypothesis-graphql) | `0.11.1` | `0.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.16` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.5.0` |\n| [lazy-loader](https://github.com/scientific-python/lazy-loader) | `0.4` | `0.5` |\n| [librosa](https://github.com/librosa/librosa) | `0.10.2.post1` | `0.11.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.9.2` | `3.10.9` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.36.0` |\n| [mteb](https://github.com/embeddings-benchmark/mteb) | `2.8.3` | `2.12.30` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.1.0` | `6.7.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.2.1` | `3.4.2` |\n| [nvidia-cublas](https://developer.nvidia.com/cuda-zone) | `13.1.0.3` | `13.5.1.27` |\n| [nvidia-cuda-cupti](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.3.35` |\n| [nvidia-cuda-nvrtc](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.3.33` |\n| [nvidia-cuda-runtime](https://developer.nvidia.com/cuda-zone) | `13.0.96` | `13.3.29` |\n| [nvidia-cudnn-cu13](https://developer.nvidia.com/cuda-zone) | `9.19.0.56` | `9.22.0.52` |\n| [nvidia-cufft](https://developer.nvidia.com/cuda-zone) | `12.0.0.61` | `12.3.0.29` |\n| [nvidia-cufile](https://developer.nvidia.com/cuda-zone) | `1.15.1.6` | `1.18.0.66` |\n| [nvidia-cusolver](https://developer.nvidia.com/cuda-zone) | `12.0.4.66` | `12.2.2.18` |\n| [nvidia-cusparse](https://developer.nvidia.com/cuda-zone) | `12.6.3.3` | `12.8.1.7` |\n| [nvidia-cusparselt-cu13](https://developer.nvidia.com/cusparselt) | `0.8.0` | `0.9.1` |\n| [nvidia-nccl-cu13](https://developer.nvidia.com/cuda-zone) | `2.28.9` | `2.30.4` |\n| [nvidia-nvjitlink](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.3.33` |\n| [nvidia-nvshmem-cu13](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.6.5` |\n| [nvidia-nvtx](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.3.29` |\n| [opentelemetry-exporter-prometheus](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.63b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.63b1` |\n| [pathvalidate](https://github.com/thombashi/pathvalidate) | `3.2.1` | `3.3.1` |\n| [peft](https://github.com/huggingface/peft) | `0.18.1` | `0.19.1` |\n| [perceptron](https://github.com/perceptron-ai-inc/perceptron) | `0.1.4` | `0.3.5` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.9.6` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.29.0` | `1.41.0` |\n| [pooch](https://github.com/fatiando/pooch) | `1.8.2` | `1.9.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.2.0` | `0.5.2` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.28.0` |\n| [pycryptodomex](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.1` | `2.47.0` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.10.5` | `2.11.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.13.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.0` | `3.3.2` |\n| [pystemmer](https://github.com/snowballstem/pystemmer) | `3.0.0` | `3.1.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [pytest-subtests](https://github.com/pytest-dev/pytest-subtests) | `0.14.1` | `0.15.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) | `1.20` | `1.23` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.12.1` | `3.14.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.37.0` |\n| [responses](https://github.com/getsentry/responses) | `0.25.3` | `0.26.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.1` | `0.30.0` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.3` | `0.17.1` |\n| [sacrebleu](https://github.com/mjpost/sacrebleu) | `2.4.3` | `2.6.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.13.1` | `1.15.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.0` | `5.5.1` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.6.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tabulate](https://github.com/astanin/python-tabulate) | `0.9.0` | `0.10.0` |\n| [tensorizer](https://github.com/coreweave/tensorizer) | `2.10.1` | `2.12.1` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.1` |\n| [triton](https://github.com/triton-lang/triton) | `3.6.0` | `3.7.0` |\n| [tritonclient](https://github.com/triton-inference-server/client) | `2.64.0` | `2.68.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.26.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.48.0` |\n| [vector-quantize-pytorch](https://github.com/lucidrains/vector-quantizer-pytorch) | `1.21.2` | `1.29.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.7.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.7.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.24.2` |\n| [tpu-inference](https://github.com/vllm-project/tpu-inference) | `0.19.0` | `0.20.0` |\n| [conch-triton-kernels](https://github.com/stackav-oss/conch) | `1.2.1` | `1.3` |\n| [helion](https://github.com/pytorch/helion) | `1.0.0` | `1.1.0` |\n\nUpdates `regex` from 2026.2.28 to 2026.5.9\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.5.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReverse matching with full unicode casefolding could lead to out-of-range string indexes.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eA fix for older Python versions before free-threading was  supported.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eMore fixes for free-threading.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\n\u003cp\u003eAdded prefixmatch as alias of match, like in re module.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.1.15\u003c/p\u003e\n\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/mrabarnett/mrab-regex/commit/e57d185bb711729091907b23edac5dcba0426243\"\u003e\u003ccode\u003ee57d185\u003c/code\u003e\u003c/a\u003e Reverse matching with full unicode casefolding lead to out-of-range string in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.5.9\"\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.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\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\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.3...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `transformers` from 5.5.3 to 5.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/transformers/releases\"\u003etransformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease v5.9.0\u003c/h1\u003e\n\u003ch2\u003eNew Model additions\u003c/h2\u003e\n\u003ch3\u003eCohere2Moe\u003c/h3\u003e\n\u003cp\u003eCommand A+ is a Mixture-of-Experts (MoE) language model from Cohere that features a hybrid attention pattern combining sliding window and full attention layers. The model incorporates both shared and routed experts and supports a very large context window for processing extensive text sequences.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/cohere2_moe\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new cohere2_moe model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46115\"\u003e#46115\u003c/a\u003e) by \u003ca href=\"https://github.com/Cyrilvallez\"\u003e\u003ccode\u003e@​Cyrilvallez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/46115\"\u003e#46115\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParakeet tdt (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44171\"\u003e#44171\u003c/a\u003e)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParakeet tdt (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44171\"\u003e#44171\u003c/a\u003e) by \u003ca href=\"https://github.com/lmaksym\"\u003e\u003ccode\u003e@​lmaksym\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHRM-Text\u003c/h3\u003e\n\u003cp\u003eHRM-Text is an improved autoregressive language-modeling variant of the Hierarchical Reasoning Model (HRM) that uses a hierarchical recurrent forward pass with two transformer stacks - one for slow, abstract planning (H) and one for fast, detailed computation (L) - reused inside a nested recurrence. It features PrefixLM attention where instruction tokens attend bidirectionally while response tokens attend causally, per-head sigmoid output gates, and parameterless RMSNorm. The model is designed as a base language model without instruction tuning or chat templates.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/hrm_text\"\u003eDocumentation\u003c/a\u003e | \u003ca href=\"https://huggingface.co/papers/2506.21734\"\u003ePaper\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd hrm text (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46025\"\u003e#46025\u003c/a\u003e) by \u003ca href=\"https://github.com/abcd1927\"\u003e\u003ccode\u003e@​abcd1927\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/46025\"\u003e#46025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBreaking changes\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003etext_embeds\u003c/code\u003e input for SAM3, EdgeTAM, and SAM3-Lite-Text models now expects full text embeddings instead of just pooler outputs, aligning with other models in the library — users must update their inputs accordingly.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e🚨Fix memory leaks caused by lru decorators in vision models (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45922\"\u003e#45922\u003c/a\u003e) by \u003ca href=\"https://github.com/yonigozlan\"\u003e\u003ccode\u003e@​yonigozlan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAudio\u003c/h2\u003e\n\u003cp\u003eAudio support was expanded with the addition of AudioFlamingoNext model checkpoints and improved compilability of audio/vision encoders via standalone pure functions. Additional improvements include better error messaging when loading audio from video files and new documentation for audio/video processors.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003euser friendly error when loading audio from video (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45221\"\u003e#45221\u003c/a\u003e) by \u003ca href=\"https://github.com/eustlb\"\u003e\u003ccode\u003e@​eustlb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45221\"\u003e#45221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[docs] adding audio/video processors (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45795\"\u003e#45795\u003c/a\u003e) by \u003ca href=\"https://github.com/stevhliu\"\u003e\u003ccode\u003e@​stevhliu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45795\"\u003e#45795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Audio Flamingo Next checkpoints (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44830\"\u003e#44830\u003c/a\u003e) by \u003ca href=\"https://github.com/lashahub\"\u003e\u003ccode\u003e@​lashahub\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44830\"\u003e#44830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract dynamic vision/audio tensors into standalone pure functions (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45396\"\u003e#45396\u003c/a\u003e) by \u003ca href=\"https://github.com/IlyasMoutawwakil\"\u003e\u003ccode\u003e@​IlyasMoutawwakil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45396\"\u003e#45396\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneration\u003c/h2\u003e\n\u003cp\u003eFixed generation issues including \u003ccode\u003einputs_embeds\u003c/code\u003e and \u003ccode\u003eper_layer_inputs\u003c/code\u003e handling for Gemma4, an \u003ccode\u003eAttributeError\u003c/code\u003e in RAG's \u003ccode\u003egenerate()\u003c/code\u003e caused by missing config fields, and flaky VLM generation tests by blocking special image tokens during sampling.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Gemma4 generation from inputs_embeds and per_layer_inputs (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46049\"\u003e#46049\u003c/a\u003e) by \u003ca href=\"https://github.com/Cyrilvallez\"\u003e\u003ccode\u003e@​Cyrilvallez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46049\"\u003e#46049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AttributeError in RAG generate() for missing config fields (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46035\"\u003e#46035\u003c/a\u003e) by \u003ca href=\"https://github.com/Sriniketh24\"\u003e\u003ccode\u003e@​Sriniketh24\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46035\"\u003e#46035\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/huggingface/transformers/commit/0a2757da521a7a49b8143d9e0c938f08747d682e\"\u003e\u003ccode\u003e0a2757d\u003c/code\u003e\u003c/a\u003e release v5.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/e370a7f3f49c3c759cf8c7c01a935ce0e00c3f44\"\u003e\u003ccode\u003ee370a7f\u003c/code\u003e\u003c/a\u003e fix cohere2 tp_plan for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/f59ffd1ef95634f9b0317ec5d8d43d71e3604a10\"\u003e\u003ccode\u003ef59ffd1\u003c/code\u003e\u003c/a\u003e Add new cohere2_moe model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46115\"\u003e#46115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/4f41f261efcfd71ce08db2890b7c632cc9ffc0bc\"\u003e\u003ccode\u003e4f41f26\u003c/code\u003e\u003c/a\u003e [loading] Free up tensors faster inside ConversionOps (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46110\"\u003e#46110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/d5dd7eed2f7d5b2ccba569e150647ef275e56365\"\u003e\u003ccode\u003ed5dd7ee\u003c/code\u003e\u003c/a\u003e Fix post processing RF-DETR (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46041\"\u003e#46041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/0b25f8c49c37530ce9f8742d7a8c19ed8d254d7d\"\u003e\u003ccode\u003e0b25f8c\u003c/code\u003e\u003c/a\u003e [serve] Support for reasoning  (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45690\"\u003e#45690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/0df9b7fcaab447c75543598e6d959065c2296a24\"\u003e\u003ccode\u003e0df9b7f\u003c/code\u003e\u003c/a\u003e Fix Gemma4 generation from inputs_embeds and per_layer_inputs (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46049\"\u003e#46049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/38a8b55f22d593c103e8bcc616413e70a5ef03ca\"\u003e\u003ccode\u003e38a8b55\u003c/code\u003e\u003c/a\u003e Parakeet tdt (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44171\"\u003e#44171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/3428030a179620b01cb598928b6cc7d5e5e60990\"\u003e\u003ccode\u003e3428030\u003c/code\u003e\u003c/a\u003e Remove mask visualization tool from \u003ccode\u003emasking_utils.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/46066\"\u003e#46066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/dda06506142a0efe4081a0ab574fbd3c7c72dc37\"\u003e\u003ccode\u003edda0650\u003c/code\u003e\u003c/a\u003e user friendly error when loading audio from video (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45221\"\u003e#45221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/transformers/compare/v5.5.3...v5.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.2 to 0.23.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.23.1\u003c/h2\u003e\n\u003ch2\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003etokenizers 0.23.1\u003c/code\u003e is the first proper stable release in the \u003ccode\u003e0.23\u003c/code\u003e line — \u003ccode\u003e0.23.0\u003c/code\u003e only ever shipped as \u003ccode\u003erc0\u003c/code\u003e because the release pipeline itself was broken (Node side hadn't shipped multi-platform binaries since 2023, Python side was on \u003ccode\u003epyo3 0.27\u003c/code\u003e without free-threaded support). \u003ccode\u003e0.23.1\u003c/code\u003e is the version where everything actually goes out the door together: full Node multi-platform wheels for the first time in years, Python 3.14 (regular \u003cstrong\u003eand\u003c/strong\u003e free-threaded \u003ccode\u003e3.14t\u003c/code\u003e), full type hints for every Python class, and a stack of measurable perf wins on the BPE / added-vocab hot paths.\u003c/p\u003e\n\u003cp\u003eThere is no functional \u003ccode\u003e0.23.0\u003c/code\u003e published — we tag \u003ccode\u003e0.23.1\u003c/code\u003e directly so users don't accidentally pull a never-shipped version.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🚨 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDrop Python 3.9\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1952\"\u003e#1952\u003c/a\u003e) — \u003ccode\u003erequires-python = \u0026quot;\u0026gt;=3.10\u0026quot;\u003c/code\u003e; 3.9 users stay on \u003ccode\u003e0.22.x\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eadd_tokens\u003c/code\u003e normalizes \u003ccode\u003econtent\u003c/code\u003e at insertion\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e) — re-saved \u003ccode\u003etokenizer.json\u003c/code\u003e may differ in the \u003ccode\u003eadded_tokens\u003c/code\u003e block. Existing files load unchanged.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eType stubs are precise\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1928\"\u003e#1928\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1997\"\u003e#1997\u003c/a\u003e) — methods that returned \u003ccode\u003eAny\u003c/code\u003e now return real types; \u003ccode\u003emypy --strict\u003c/code\u003e may surface previously-hidden errors. Stub layout also moved from \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;/__init__.pyi\u003c/code\u003e to \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;.pyi\u003c/code\u003e. This breaks the surface of some of the processors like \u003ccode\u003eRobertaProcessign\u003c/code\u003e's \u003ccode\u003e__init__\u003c/code\u003e .\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e3.14t-only\u003c/strong\u003e: setters/getters return \u003ccode\u003ePyResult\u0026lt;T\u0026gt;\u003c/code\u003e because of \u003ccode\u003eArc\u0026lt;RwLock\u0026lt;Tokenizer\u0026gt;\u0026gt;\u003c/code\u003e; a poisoned lock surfaces as \u003ccode\u003ePyException\u003c/code\u003e instead of a panic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e⚡ Performance — measured locally on this Mac, not lifted from PRs\u003c/h2\u003e\n\u003cp\u003eRun with \u003ccode\u003ecargo bench --bench \u0026lt;name\u0026gt; -- --save-baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.22.2\u003c/code\u003e, then \u003ccode\u003e--baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.23.1\u003c/code\u003e. Numbers are point-in-time wall clock on a single laptop; relative deltas are what matters, absolute numbers will differ on CI hardware.\u003c/p\u003e\n\u003ch3\u003eAdded-vocabulary deserialize — the headline win (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003ebench: improve added_vocab_deserialize to reflect real-world workloads\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2000\"\u003e#2000\u003c/a\u003e) is now representative of how transformers actually loads tokenizer.json files. The combined effect of \u003ccode\u003edaachorse\u003c/code\u003e for the matching automaton plus the normalize-on-insert refactor is enormous on this workload:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~410 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e248 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.1 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e273 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~395 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e235 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.4 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e290 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e400k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~15 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e980 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−94%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eReal-world impact: loading a Llama-3-style tokenizer with a large set of added tokens dropped from \u0026quot;noticeable pause\u0026quot; to \u0026quot;instant\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eBPE encode\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch, no cache\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e530 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e446 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−16%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch\u003c/code\u003e (cached)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e690 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e685 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode\u003c/code\u003e (single)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.95 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.94 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (small)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e32.6 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e31.5 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−3%\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (big)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.01 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e988 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−2%\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe BPE per-thread cache PR (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e) shows much larger wins on highly-parallel workloads (+47–62% at 88+ threads on a server box, per the PR's own measurements on Vera). Single-thread batch numbers above are flat or slightly improved because cache-hit overhead was already low without contention.\u003c/p\u003e\n\u003ch3\u003eLlama-3 encode\u003c/h3\u003e\n\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/huggingface/tokenizers/commit/7f1623b90b5adfb9bc327d4c3468d2f70bbce262\"\u003e\u003ccode\u003e7f1623b\u003c/code\u003e\u003c/a\u003e Bump version to 0.23.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bbe43ad73d8fc8932b9d0e657ddee3cd70c649a4\"\u003e\u003ccode\u003ebbe43ad\u003c/code\u003e\u003c/a\u003e ci: release workflow fixes (node + python) (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2043\"\u003e#2043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ab0c5d8fc13eb1c5001d9c06806635e2b5a42e9f\"\u003e\u003ccode\u003eab0c5d8\u003c/code\u003e\u003c/a\u003e Fix node release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2034\"\u003e#2034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/decd8e07dad15f296c0adc2bc3a560f62d3de2eb\"\u003e\u003ccode\u003edecd8e0\u003c/code\u003e\u003c/a\u003e bindings/python: free-threaded Python (3.14t) support (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2041\"\u003e#2041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/3992692d483bf3177219b52cb101b1bb055c18e6\"\u003e\u003ccode\u003e3992692\u003c/code\u003e\u003c/a\u003e update for release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2033\"\u003e#2033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bcdd25b97fcd78549903082ecf3ddd87d42c456b\"\u003e\u003ccode\u003ebcdd25b\u003c/code\u003e\u003c/a\u003e BPE cache: per-thread read-through cache to avoid RwLock atomics on hits (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/618eb383f43e207139eb5cdb9bca17796b5e9bd7\"\u003e\u003ccode\u003e618eb38\u003c/code\u003e\u003c/a\u003e Bump follow-redirects in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b6b1688bef2e87efc91af18edf7ac38b4d2dfbe6\"\u003e\u003ccode\u003eb6b1688\u003c/code\u003e\u003c/a\u003e chore: bump doc-builder SHA for PR upload workflow (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2025\"\u003e#2025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/19015d6b44aa3896626de5092e4171aed1b56d5b\"\u003e\u003ccode\u003e19015d6\u003c/code\u003e\u003c/a\u003e fix: use uvx --with cairosvg instead of uv pip install --system (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/efbcc68e321c364c8f9541f1c93a158df54d7da4\"\u003e\u003ccode\u003eefbcc68\u003c/code\u003e\u003c/a\u003e Ci benchmarks (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2019\"\u003e#2019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.2...v0.23.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.136.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.3\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (the default). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15589\"\u003e#15589\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.2\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Validate Server Sent Event fields to avoid applications from sending broken data. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15588\"\u003e#15588\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15464\"\u003e#15464\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update and simplify docs about help and management. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15583\"\u003e#15583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs references to central contributing docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15580\"\u003e#15580\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15577\"\u003e#15577\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🍱 Update sponsors: TalorData image. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15562\"\u003e#15562\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs, simplify usage of admonitions, only default ones. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15553\"\u003e#15553\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix image URLs in \u003ccode\u003eindex.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15534\"\u003e#15534\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix Azkaban spelling typo in \u003ccode\u003evirtual-environments.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15463\"\u003e#15463\u003c/a\u003e by \u003ca href=\"https://github.com/isaacbernat\"\u003e\u003ccode\u003e@​isaacbernat\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Improve layout and styling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15462\"\u003e#15462\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Refactor opinions section with interactive tabs and new logos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15458\"\u003e#15458\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add FastAPI Conf '26 announcement to docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15457\"\u003e#15457\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Improve translation consistency in \u003ccode\u003e‎docs/pt/docs/advanced/generate-clients.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15456\"\u003e#15456\u003c/a\u003e by \u003ca href=\"https://github.com/Will-thom\"\u003e\u003ccode\u003e@​Will-thom\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15530\"\u003e#15530\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15529\"\u003e#15529\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15528\"\u003e#15528\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15527\"\u003e#15527\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15526\"\u003e#15526\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15525\"\u003e#15525\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15524\"\u003e#15524\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15522\"\u003e#15522\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15523\"\u003e#15523\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15520\"\u003e#15520\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15521\"\u003e#15521\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Fix typos in Spanish LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15472\"\u003e#15472\u003c/a\u003e by \u003ca href=\"https://github.com/crr004\"\u003e\u003ccode\u003e@​crr004\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Update tests, don't double dispose the engine. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15587\"\u003e#15587\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⚡️ Speed up test suite via caching and fixture scopes to make it ~24% faster. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13583\"\u003e#13583\u003c/a\u003e by \u003ca href=\"https://github.com/dikos1337\"\u003e\u003ccode\u003e@​dikos1337\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15585\"\u003e#15585\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump urllib3 from 2.6.3 to 2.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15502\"\u003e#15502\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump idna from 3.11 to 3.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15565\"\u003e#15565\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.15.0 to 4.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15571\"\u003e#15571\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Migrate docs from MkDocs to Zensical. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15563\"\u003e#15563\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15548\"\u003e#15548\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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/fastapi/fastapi/commit/82064857539e6286522c347b4b11331b48dd2378\"\u003e\u003ccode\u003e8206485\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c910e0139f983d0e04e2d1d235cd71803afeae34\"\u003e\u003ccode\u003ec910e01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/063b5bf582d31fb155cc6bc6f88cf512329d0fd5\"\u003e\u003ccode\u003e063b5bf\u003c/code\u003e\u003c/a\u003e ♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/22b02e26f9e8c7e32bd8266e2b0ebe8bb3a0db2b\"\u003e\u003ccode\u003e22b02e2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b252a2a22ba27a8ab83d6bde7d9cddbc5bf738e\"\u003e\u003ccode\u003e3b252a2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7fb7851b3389f24c51701d705458989be53ccbb\"\u003e\u003ccode\u003ec7fb785\u003c/code\u003e\u003c/a\u003e ♻️ Validate Server Sent Event fields to avoid applications from sending broke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb83b83dcf78eab4ea17d504db5abcda705fbdc4\"\u003e\u003ccode\u003ecb83b83\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/00f805cec94c0bf48c1f9a563535a3ab2e6f90ab\"\u003e\u003ccode\u003e00f805c\u003c/code\u003e\u003c/a\u003e ✅ Update tests, don't double dispose the engine (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15587\"\u003e#15587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3675137523dc167981aa3a3c44599b4f3079ccd8\"\u003e\u003ccode\u003e3675137\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7b57e42986bb4d40c9eb6580537d13fb8e76097e\"\u003e\u003ccode\u003e7b57e42\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15464\"\u003e#15464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.136.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.0 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\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/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.0...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code...\n\n_Description has been truncated_","html_url":"https://github.com/kingcharlezz/deepseek-v4-flash-deterministic-vllm/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingcharlezz%2Fdeepseek-v4-flash-deterministic-vllm/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-05-25T04:41:50.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4514318366","node_id":"PR_kwDOERpozs7e6EfY","number":1059,"state":"open","title":"Deps: Bump the python-packages group with 27 updates","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-25T04:41:50.000Z","updated_at":"2026-05-25T04:43:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Deps: Bump","group_name":"python-packages","update_count":27,"packages":[{"name":"django","old_version":"4.2.30","new_version":"5.2.14","repository_url":"https://github.com/django/django"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"weasyprint","old_version":"66.0","new_version":"68.1","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"pylint","old_version":"3.3.9","new_version":"4.0.5","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-django","old_version":"4.11.1","new_version":"4.12.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"pytest-env","old_version":"1.1.5","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pontos","old_version":"26.2.0","new_version":"26.5.0","repository_url":"https://github.com/greenbone/pontos"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"astroid","old_version":"3.3.11","new_version":"4.0.4","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"coverage","old_version":"7.10.7","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cssselect2","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"idna","old_version":"3.15","new_version":"3.16","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isort","old_version":"6.1.0","new_version":"8.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydyf","old_version":"0.11.0","new_version":"0.12.1","repository_url":"https://github.com/CourtBouillon/pydyf"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.13","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tinyhtml5","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/CourtBouillon/tinyhtml5"},{"name":"zopfli","old_version":"0.2.3.post1","new_version":"0.4.1","repository_url":"https://github.com/fonttools/py-zopfli"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 27 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `4.2.30` | `5.2.14` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `66.0` | `68.1` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.9` | `4.0.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.3` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.11.1` | `4.12.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.1.5` | `1.6.0` |\n| [pontos](https://github.com/greenbone/pontos) | `26.2.0` | `26.5.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [astroid](https://github.com/pylint-dev/astroid) | `3.3.11` | `4.0.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.14.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.8.0` | `0.9.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.63.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.16` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.1.0` | `8.0.1` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.6` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pydyf](https://github.com/CourtBouillon/pydyf) | `0.11.0` | `0.12.1` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.14` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tinyhtml5](https://github.com/CourtBouillon/tinyhtml5) | `2.0.0` | `2.1.0` |\n| [zopfli](https://github.com/fonttools/py-zopfli) | `0.2.3.post1` | `0.4.1` |\n\nUpdates `django` from 4.2.30 to 5.2.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/024c26b1e77ea5b1b158265167ade47927a64c06\"\u003e\u003ccode\u003e024c26b\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.14 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2115d4eaee15107f5cd290d7cfcc5ffe3ad43661\"\u003e\u003ccode\u003e2115d4e\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/47cf968c125e3fab317e10fe150ec479e745f995\"\u003e\u003ccode\u003e47cf968\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2ec27eda3ba6c14f0856e6e3eb1df07c41fd95e6\"\u003e\u003ccode\u003e2ec27ed\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ed18840c8cd1be81fdb3955cbfc9459989d6df68\"\u003e\u003ccode\u003eed18840\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/de3f622b7fa72aee68650f15263f2788b626680a\"\u003e\u003ccode\u003ede3f622\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fb61c8a6e902abc885048a1a78592a4bd4329f87\"\u003e\u003ccode\u003efb61c8a\u003c/code\u003e\u003c/a\u003e [5.2.x] Refs CVE-2026-4292 -- Isolated new test in AdminViewListEditable.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/bd1a7583061a96059ea560eb7b59bebce4240778\"\u003e\u003ccode\u003ebd1a758\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed two issues in release helper scripts/verify_release.sh.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/da57aaad76e674fdb01b741974acf229d3ac4132\"\u003e\u003ccode\u003eda57aaa\u003c/code\u003e\u003c/a\u003e [5.2.x] Added CVE-2026-3902, CVE-2026-4277, CVE-2026-4292, CVE-2026-33033, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9a8bdbc4839a442b1a0453bd8ed38def4776139\"\u003e\u003ccode\u003ec9a8bdb\u003c/code\u003e\u003c/a\u003e [5.2.x] Post-release version bump.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/4.2.30...5.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9928\"\u003eencode/django-rest-framework#9928\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\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/encode/django-rest-framework/commit/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `weasyprint` from 66.0 to 68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/WeasyPrint/releases\"\u003eweasyprint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev68.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2662\"\u003e#2662\u003c/a\u003e: Don’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2665\"\u003e#2665\u003c/a\u003e: Fix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2663\"\u003e#2663\u003c/a\u003e: Fix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2666\"\u003e#2666\u003c/a\u003e: Don’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2670\"\u003e#2670\u003c/a\u003e: Fix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2671\"\u003e#2671\u003c/a\u003e: Improve API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2672\"\u003e#2672\u003c/a\u003e: Fix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2675\"\u003e#2675\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2673\"\u003e#2673\u003c/a\u003e: Fix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBackers and sponsors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\u003c/li\u003e\n\u003cli\u003eProthesis Dental Solutions\u003c/li\u003e\n\u003cli\u003eKai DeLorenzo\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev68.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThis is a security update (CVE-2025-68616).\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWe strongly recommend to upgrade WeasyPrint to the latest version if you use the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function in your custom URL fetcher, or if you use the \u003ccode\u003eallowed_protocols\u003c/code\u003e parameter of the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function.\u003c/p\u003e\n\u003cp\u003eRead about this release \u003ca href=\"https://www.courtbouillon.org/blog/00061-weasyprint-68/\"\u003eon our blog\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eSecurity\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/WeasyPrint/blob/main/docs/changelog.rst\"\u003eweasyprint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 68.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-06.\u003c/p\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#2662](https://github.com/Kozea/WeasyPrint/issues/2662) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2662\u0026gt;\u003c/code\u003e_:\nDon’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2665](https://github.com/Kozea/WeasyPrint/issues/2665) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2665\u0026gt;\u003c/code\u003e_:\nFix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2663](https://github.com/Kozea/WeasyPrint/issues/2663) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2663\u0026gt;\u003c/code\u003e_:\nFix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2666](https://github.com/Kozea/WeasyPrint/issues/2666) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2666\u0026gt;\u003c/code\u003e_:\nDon’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2670](https://github.com/Kozea/WeasyPrint/issues/2670) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2670\u0026gt;\u003c/code\u003e_:\nFix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2671](https://github.com/Kozea/WeasyPrint/issues/2671) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2671\u0026gt;\u003c/code\u003e_:\nImprove API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2672](https://github.com/Kozea/WeasyPrint/issues/2672) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2672\u0026gt;\u003c/code\u003e_:\nFix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2675](https://github.com/Kozea/WeasyPrint/issues/2675) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2675\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#2673](https://github.com/Kozea/WeasyPrint/issues/2673) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2673\u0026gt;\u003c/code\u003e\u003c/em\u003e:\nFix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eContributors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackers and sponsors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\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/Kozea/WeasyPrint/commit/88d466df43b205c6abbc385e2832cbe6c77aeddc\"\u003e\u003ccode\u003e88d466d\u003c/code\u003e\u003c/a\u003e Version 68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/d5dab6e9f173826208082f24546977927d9c3c0c\"\u003e\u003ccode\u003ed5dab6e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2675\"\u003e#2675\u003c/a\u003e from Kozea/fix-calc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/e752cb3fde54d13cdc5eb4a7fdb80fd172a3c28b\"\u003e\u003ccode\u003ee752cb3\u003c/code\u003e\u003c/a\u003e Allow calc for more properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/66928cec7a2b000c706b5699518adbcedeff6e71\"\u003e\u003ccode\u003e66928ce\u003c/code\u003e\u003c/a\u003e Allow calc for preferred content width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/c155e217b8ff1624f536113ab54622effece3ad8\"\u003e\u003ccode\u003ec155e21\u003c/code\u003e\u003c/a\u003e Allow calc for text-underline-offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/9f5ca24e816a250b3c35cc5dda4b871cbc8d829a\"\u003e\u003ccode\u003e9f5ca24\u003c/code\u003e\u003c/a\u003e Allow calc for text-decoration-thickness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/b2acd6d5eb7fc00920a883169b62ad13394e1f38\"\u003e\u003ccode\u003eb2acd6d\u003c/code\u003e\u003c/a\u003e Allow calc for hyphenate-limit-zone\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/321bcf696acb710115a467d04fc0b5f640faf627\"\u003e\u003ccode\u003e321bcf6\u003c/code\u003e\u003c/a\u003e Simplify, test and fix wrong calc() values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/38d3f53154a2c3c3d7b29dd11e01ed21f61fc2ab\"\u003e\u003ccode\u003e38d3f53\u003c/code\u003e\u003c/a\u003e Fix and test calc() function for table width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/4dfd05f13dfeadf36d44e8f72ee3f2df0b4c6945\"\u003e\u003ccode\u003e4dfd05f\u003c/code\u003e\u003c/a\u003e Don’t iterate over all lines when trying to report footnotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/WeasyPrint/compare/v66.0...v68.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pylint` from 3.3.9 to 4.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/88e1ab7545a4af4aea15c305a154c164a95ab842\"\u003e\u003ccode\u003e88e1ab7\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.5, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10860\"\u003e#10860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/d96d489a1743d32b6bfa53fc0f69a4333209a146\"\u003e\u003ccode\u003ed96d489\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Relax isort version constraint to allow isort 8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/0b08ccb014c265700f244a885bdcbdfa3a03de46\"\u003e\u003ccode\u003e0b08ccb\u003c/code\u003e\u003c/a\u003e Fix dynamic color mapping for \u0026quot;fail-on\u0026quot; messages when using multiple reporter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/154dba43276e8232a2e1cb8f90bfcc63886f3460\"\u003e\u003ccode\u003e154dba4\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix FP for \u003ccode\u003einvalid-name\u003c/code\u003e with \u003ccode\u003etyping.Final\u003c/code\u003e on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7b73bfdedf275935b9c5b43a6aeda5cc648b4847\"\u003e\u003ccode\u003e7b73bfd\u003c/code\u003e\u003c/a\u003e Disable unspecified-encoding for py-version above Python 3.15 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10800\"\u003e#10800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/4cc98be8b7786dbc6692493fe9cedb8585af5518\"\u003e\u003ccode\u003e4cc98be\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix setting options for import order checker (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f0d30a27b510d69f846e3aaa0054cf0a1412923c\"\u003e\u003ccode\u003ef0d30a2\u003c/code\u003e\u003c/a\u003e Sync astroid version with requirements file again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/38bdf024648724e6aea017e62d3b57cb44097ec3\"\u003e\u003ccode\u003e38bdf02\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix \u003ccode\u003elogging-unsupported-format\u003c/code\u003e when logging ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f08c33ae3e691eed868e49c0d15270dc6e6a0d6c\"\u003e\u003ccode\u003ef08c33a\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Properly detect \u003ccode\u003eself.fail()\u003c/code\u003e as a terminating...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/e16f942166511d6fb4427e503a734152fae0c4fe\"\u003e\u003ccode\u003ee16f942\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v3.3.9...v4.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.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\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\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/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\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/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/8.4.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 `pytest-django` from 4.11.1 to 4.12.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-django/blob/main/docs/changelog.rst\"\u003epytest-django's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.12.0 (2026-02-14)\u003c/h2\u003e\n\u003cp\u003eCompatibility\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficial Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9, minimum version is now Python 3.10.\u003c/li\u003e\n\u003cli\u003eOfficial Django 6.0 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements\n^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe :ref:\u003ccode\u003emultiple databases \u0026lt;multi-db\u0026gt;\u003c/code\u003e support added in v4.3.0 is no longer considered experimental.\u003c/li\u003e\n\u003cli\u003eAdded :func:\u003ccode\u003e@pytest.mark.django_isolate_apps \u0026lt;pytest.mark.django_isolate_apps\u0026gt;\u003c/code\u003e\nfor isolating Django's app registry in pytest tests, and a\n:fixture:\u003ccode\u003edjango_isolated_apps\u003c/code\u003e fixture to access the isolated Apps registry instance if needed.\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-django/commit/a2a94956cc24bb30030510710f0f27e61efb0cf0\"\u003e\u003ccode\u003ea2a9495\u003c/code\u003e\u003c/a\u003e Release 4.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/020bc237ac7be78ab3a2780d07637f77166a6263\"\u003e\u003ccode\u003e020bc23\u003c/code\u003e\u003c/a\u003e tests: make sure access to default can also be blocked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/bcefbe832468f764b0f2665548aae8a9f75820a7\"\u003e\u003ccode\u003ebcefbe8\u003c/code\u003e\u003c/a\u003e Add support for isolating apps in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/39c8dcc249d5c103d29d170a5ad63a2fe7067049\"\u003e\u003ccode\u003e39c8dcc\u003c/code\u003e\u003c/a\u003e plugin: add a note why we reorder tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1830acd6193ad6d851131c9ed805c003c10ce27a\"\u003e\u003ccode\u003e1830acd\u003c/code\u003e\u003c/a\u003e pyproject.toml: require pytest 9 for self tests, switch to native toml config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/f19da084b9b8b131c5ae178f1a8a907ec6e3567b\"\u003e\u003ccode\u003ef19da08\u003c/code\u003e\u003c/a\u003e Fix the order of the test cases that use the live_server fixture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/92858eed573ce1786d0f67d242426c7f8f75dd7b\"\u003e\u003ccode\u003e92858ee\u003c/code\u003e\u003c/a\u003e docs: add pytest 9.0+ native TOML configuration format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/3f550d93947acda430c27be578b7619c25abddc8\"\u003e\u003ccode\u003e3f550d9\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1f50dd29b8778e645ca7a88a285b30a9c788afc4\"\u003e\u003ccode\u003e1f50dd2\u003c/code\u003e\u003c/a\u003e Drop obsolete traces of Django 5.0 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/247ec1c365da3d25f230dde22b7a0e1805749d09\"\u003e\u003ccode\u003e247ec1c\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePytestCollectionWarning\u003c/code\u003e for \u003ccode\u003eTestRunner\u003c/code\u003e class (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-django/issues/1259\"\u003e#1259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-django/compare/v4.11.1...v4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.1.5 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.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(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.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(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.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(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.5...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pontos` from 26.2.0 to 26.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/greenbone/pontos/releases\"\u003epontos's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epontos 26.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.3..26.5.0\"\u003e26.5.0\u003c/a\u003e - 2026-05-19\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump urllib3 from 2.6.3 to 2.7.0 by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1217\"\u003e#1217\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.2..26.4.3\"\u003e26.4.3\u003c/a\u003e - 2026-04-29\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCVE Change event name \u0026quot;Data Remediation\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1214\"\u003e#1214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.1..26.4.2\"\u003e26.4.2\u003c/a\u003e - 2026-04-27\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTwo test cases for XML files by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1211\"\u003e#1211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove XML declarations from templates by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/9e2d78c64bcd5ffc4fb793d3770bdb409cf56b1e\"\u003e9e2d78c\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:bug: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent duplication and adding of XML declarations by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/ee996b5771ddb3e0183b00ad34ffda45988d6dbc\"\u003eee996b5\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:wrench: Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse git-cliff for release changelog generation by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/af9e7f10db1b8cab9912e0c0827380feab952194\"\u003eaf9e7f1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the conventional commits workflow by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1210\"\u003e#1210\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 8 updates by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1209\"\u003e#1209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.1\u003c/h2\u003e\n\u003ch2\u003e[26.4.1] - 2026-04-21\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/greenbone/pontos/commit/a380de64b4e171a476b1cf3172319ee180ed818f\"\u003e\u003ccode\u003ea380de6\u003c/code\u003e\u003c/a\u003e Automatic release to 26.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/12b9dd283e3d261098719ac8ce94625f73e98684\"\u003e\u003ccode\u003e12b9dd2\u003c/code\u003e\u003c/a\u003e Change: Rename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/fd0a178d18da0d3ead9de7c1d9933364d6cfafac\"\u003e\u003ccode\u003efd0a178\u003c/code\u003e\u003c/a\u003e Deps: Bump urllib3 from 2.6.3 to 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/00adf5473d50e7aa0e0839984a8ba44447e28c0d\"\u003e\u003ccode\u003e00adf54\u003c/code\u003e\u003c/a\u003e Update: Greenbone license header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a793376e247ac9a8e0994d1ba56cd2e44bbaf575\"\u003e\u003ccode\u003ea793376\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/7e3dffb21ddab71884678eac10215767319d29f4\"\u003e\u003ccode\u003e7e3dffb\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/f2f04018b6e2eabb1b64123445dadbcfdb85d112\"\u003e\u003ccode\u003ef2f0401\u003c/code\u003e\u003c/a\u003e Add: CVE Change event name \u0026quot;Data Remediation\u0026quot; (\u003ca href=\"https://redirect.github.com/greenbone/pontos/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a81ba0338193a9e889da80825487a86be7179ee2\"\u003e\u003ccode\u003ea81ba03\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/46c3185d68b38c4889db97a0e89fd2622728c341\"\u003e\u003ccode\u003e46c3185\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/31d04650f4750791cbfdfbc3afa267693e709051\"\u003e\u003ccode\u003e31d0465\u003c/code\u003e\u003c/a\u003e Use snake_case for release-version output variables\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/greenbone/pontos/compare/v26.2.0...v26.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\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/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `astroid` from 3.3.11 to 4.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/astroid/releases\"\u003eastroid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.4\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.3\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.2\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/astroid/blob/main/ChangeLog\"\u003eastroid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.0?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-05\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/pylint-dev/astroid/commit/019feb6018eef32a0e3a25d8153427a537961882\"\u003e\u003ccode\u003e019feb6\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b25ee05e15b70693a4d740ac563568e0b618ec0d\"\u003e\u003ccode\u003eb25ee05\u003c/code\u003e\u003c/a\u003e Fix namespace detection crash (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2949\"\u003e#2949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b978037e67f233f4366de4ccbcdad2c627474477\"\u003e\u003ccode\u003eb978037\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.3, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/5476bc3dad1fe83bd4725ae284229a51326bd97c\"\u003e\u003ccode\u003e5476bc3\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Wrong inference with default argument values (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/ae761dca40d1aa1b7e7b941e535a819acd83f9a5\"\u003e\u003ccode\u003eae761dc\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix base class inference for dataclasses with PE...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/077c51fa1eb737a13d6888873dc432cf8cbbe9e0\"\u003e\u003ccode\u003e077c51f\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [typing] Add sys check guard for typing.Self for...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/f3255d1611277ecc3d6f338d551ce8437f66ae72\"\u003e\u003ccode\u003ef3255d1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Skip mypy install for pypy (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/d2823f2cb764b3d63c91998f6cd392629147c095\"\u003e\u003ccode\u003ed2823f2\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [ci] Fix windows cache key (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/05c79e1e57da03875a8fd8a30715688f179585da\"\u003e\u003ccode\u003e05c79e1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Improve self argument typing (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2904\"\u003e#2904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/a068430290b375a06f6eccdcea7d5026995172ba\"\u003e\u003ccode\u003ea068430\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.2, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/astroid/compare/v3.3.11...v4.0.4\"\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 `coverage` from 7.10.7 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\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/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.10.7...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cssselect2` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/cssselect2/releases\"\u003ecssselect2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\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/Kozea/cssselect2/blob/main/docs/changelog.rst\"\u003ecssselect2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eVersion 0.9.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.8.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2025-03-05.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.8 and 3.9, support 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eHandle case-sensitive and case-insensitive attribute selectors\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.7.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-09-19.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport :has selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.6.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-04-15.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis version deprecates the \u003ccode\u003eiter_ancestors\u003c/code\u003e and \u003ccode\u003eiter_previous_siblings\u003c/code\u003e\nmethods, that will be removed in 0.7.0. Use the \u003ccode\u003ean...\n\n_Description has been truncated_","html_url":"https://github.com/greenbone/pheme/pull/1059","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fpheme/issues/1059","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1059/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-05-19T16:51:47.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4479322376","node_id":"PR_kwDODnmQMs7dKieI","number":1058,"state":"closed","title":"chore(deps-dev): bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-20T22:47:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T16:51:47.000Z","updated_at":"2026-05-20T22:47:10.000Z","time_to_close":107714,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.0\"\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/microsoftgraph/msgraph-sdk-python-core/pull/1058","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoftgraph%2Fmsgraph-sdk-python-core/issues/1058","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1058/packages"}},{"old_version":"2.0.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-05-15T08:01:08.000Z","version_change":"2.0.0 → 2.3.0","issue":{"uuid":"4452313204","node_id":"PR_kwDOI7xefs7b1Vf9","number":42717,"state":"open","title":"Bump the minor-update group across 1 directory with 143 updates","user":"dependabot[bot]","labels":["rocm","ci/build","nvidia","dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-15T08:01:08.000Z","updated_at":"2026-05-20T05:01:30.742Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-update","update_count":143,"packages":[{"name":"regex","old_version":"2026.2.28","new_version":"2026.5.9","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"transformers","old_version":"5.5.3","new_version":"5.8.1","repository_url":"https://github.com/huggingface/transformers"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.12.0","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"prometheus-client","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"lark","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"filelock","old_version":"3.16.1","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"opentelemetry-sdk","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-api","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"tblib","old_version":"3.1.0","new_version":"3.2.2","repository_url":"https://github.com/ionelmc/python-tblib"},{"name":"absl-py","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/abseil/abseil-py"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.6.2.post1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argcomplete","old_version":"3.5.1","new_version":"3.6.3","repository_url":"https://github.com/kislyuk/argcomplete"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"audioread","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/beetbox/audioread"},{"name":"azure-core","old_version":"1.38.2","new_version":"1.41.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.29.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"blobfile","old_version":"3.0.0","new_version":"3.2.0","repository_url":"https://github.com/blobfile/blobfile"},{"name":"bm25s","old_version":"0.2.13","new_version":"0.3.9","repository_url":"https://github.com/xhluca/bm25s"},{"name":"boto3","old_version":"1.35.57","new_version":"1.43.10","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.57","new_version":"1.43.10","repository_url":"https://github.com/boto/botocore"},{"name":"click","old_version":"8.1.7","new_version":"8.4.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.10.6","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cramjam","old_version":"2.9.0","new_version":"2.11.0","repository_url":"https://github.com/milesgranger/pyrus-cramjam"},{"name":"cuda-bindings","old_version":"13.0.3","new_version":"13.2.0","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-pathfinder","old_version":"1.3.3","new_version":"1.5.4","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-toolkit","old_version":"13.0.2","new_version":"13.2.1"},{"name":"datamodel-code-generator","old_version":"0.26.3","new_version":"0.57.0","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"dataproperty","old_version":"1.0.1","new_version":"1.1.1","repository_url":"https://github.com/thombashi/DataProperty"},{"name":"decorator","old_version":"5.1.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dill","old_version":"0.3.8","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"einx","old_version":"0.3.0","new_version":"0.4.3","repository_url":"https://github.com/fferflo/einx"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastsafetensors","old_version":"0.2.2","new_version":"0.3.1","repository_url":"https://github.com/foundation-model-stack/fastsafetensors"},{"name":"fonttools","old_version":"4.55.0","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"google-api-core","old_version":"2.24.2","new_version":"2.30.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth","old_version":"2.40.2","new_version":"2.53.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"google-cloud-core","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-storage","old_version":"3.4.0","new_version":"3.10.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"google-crc32c","old_version":"1.7.1","new_version":"1.8.0","repository_url":"https://github.com/googleapis/python-crc32c"},{"name":"google-resumable-media","old_version":"2.7.2","new_version":"2.9.0","repository_url":"https://github.com/googleapis/google-resumable-media-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.3","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-reflection","old_version":"1.78.0","new_version":"1.80.0"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"harfile","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/schemathesis/harfile"},{"name":"hf-xet","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"hiredis","old_version":"3.0.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"huggingface-hub","old_version":"1.10.2","new_version":"1.15.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"humanize","old_version":"4.11.0","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.152.8","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"hypothesis-graphql","old_version":"0.11.1","new_version":"0.12.0","repository_url":"https://github.com/Stranger6667/hypothesis-graphql"},{"name":"idna","old_version":"3.10","new_version":"3.15","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/nucleic/kiwi"},{"name":"lazy-loader","old_version":"0.4","new_version":"0.5","repository_url":"https://github.com/scientific-python/lazy-loader"},{"name":"librosa","old_version":"0.10.2.post1","new_version":"0.11.0","repository_url":"https://github.com/librosa/librosa"},{"name":"matplotlib","old_version":"3.9.2","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.36.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"mteb","old_version":"2.8.3","new_version":"2.12.30","repository_url":"https://github.com/embeddings-benchmark/mteb"},{"name":"multidict","old_version":"6.1.0","new_version":"6.7.1","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":"networkx","old_version":"3.2.1","new_version":"3.4.2","repository_url":"https://github.com/networkx/networkx"},{"name":"nvidia-cublas","old_version":"13.1.0.3","new_version":"13.4.1.1"},{"name":"nvidia-cuda-cupti","old_version":"13.0.85","new_version":"13.2.75"},{"name":"nvidia-cuda-nvrtc","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-cuda-runtime","old_version":"13.0.96","new_version":"13.2.75"},{"name":"nvidia-cudnn-cu13","old_version":"9.19.0.56","new_version":"9.22.0.52"},{"name":"nvidia-cufft","old_version":"12.0.0.61","new_version":"12.2.0.46"},{"name":"nvidia-cufile","old_version":"1.15.1.6","new_version":"1.17.1.22"},{"name":"nvidia-cusolver","old_version":"12.0.4.66","new_version":"12.2.0.1"},{"name":"nvidia-cusparse","old_version":"12.6.3.3","new_version":"12.7.10.1"},{"name":"nvidia-cusparselt-cu13","old_version":"0.8.0","new_version":"0.9.1"},{"name":"nvidia-nccl-cu13","old_version":"2.28.9","new_version":"2.30.4"},{"name":"nvidia-nvjitlink","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-nvshmem-cu13","old_version":"3.4.5","new_version":"3.6.5"},{"name":"nvidia-nvtx","old_version":"13.0.85","new_version":"13.2.75"},{"name":"opentelemetry-exporter-prometheus","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pathvalidate","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/thombashi/pathvalidate"},{"name":"peft","old_version":"0.18.1","new_version":"0.19.1","repository_url":"https://github.com/huggingface/peft"},{"name":"perceptron","old_version":"0.1.4","new_version":"0.3.5","repository_url":"https://github.com/perceptron-ai-inc/perceptron"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.9.6","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":"polars","old_version":"1.29.0","new_version":"1.40.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"pooch","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/fatiando/pooch"},{"name":"propcache","old_version":"0.2.0","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.28.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pycryptodomex","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.41.1","new_version":"2.46.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-extra-types","old_version":"2.10.5","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pygments","old_version":"2.18.0","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.2.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-subtests","old_version":"0.14.1","new_version":"0.15.0","repository_url":"https://github.com/pytest-dev/pytest-subtests"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"python-rapidjson","old_version":"1.20","new_version":"1.23","repository_url":"https://github.com/python-rapidjson/python-rapidjson"},{"name":"rapidfuzz","old_version":"3.12.1","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.35.1","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"responses","old_version":"0.25.3","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"rpds-py","old_version":"0.20.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"s3transfer","old_version":"0.10.3","new_version":"0.17.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sacrebleu","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/mjpost/sacrebleu"},{"name":"safetensors","old_version":"0.4.5","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.5.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.13.1","new_version":"1.15.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"5.2.0","new_version":"5.5.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.6.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tabulate","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/astanin/python-tabulate"},{"name":"tensorizer","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/coreweave/tensorizer"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"triton","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/triton-lang/triton"},{"name":"tritonclient","old_version":"2.64.0","new_version":"2.68.0","repository_url":"https://github.com/triton-inference-server/client"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.47.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"vector-quantize-pytorch","old_version":"1.21.2","new_version":"1.29.1","repository_url":"https://github.com/lucidrains/vector-quantizer-pytorch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.7.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.7.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yarl","old_version":"1.17.1","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"conch-triton-kernels","old_version":"1.2.1","new_version":"1.3","repository_url":"https://github.com/stackav-oss/conch"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-update group with 143 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.5.9` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| [transformers](https://github.com/huggingface/transformers) | `5.5.3` | `5.8.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.0` | `2.13.4` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.0` | `0.25.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` |\n| [lark](https://github.com/lark-parser/lark) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.16.1` | `3.29.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [tblib](https://github.com/ionelmc/python-tblib) | `3.1.0` | `3.2.2` |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.4.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.4` |\n| [anyio](https://github.com/agronholm/anyio) | `4.6.2.post1` | `4.13.0` |\n| [argcomplete](https://github.com/kislyuk/argcomplete) | `3.5.1` | `3.6.3` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [audioread](https://github.com/beetbox/audioread) | `3.0.1` | `3.1.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.29.0` |\n| [blobfile](https://github.com/blobfile/blobfile) | `3.0.0` | `3.2.0` |\n| [bm25s](https://github.com/xhluca/bm25s) | `0.2.13` | `0.3.9` |\n| [boto3](https://github.com/boto/boto3) | `1.35.57` | `1.43.10` |\n| [botocore](https://github.com/boto/botocore) | `1.35.57` | `1.43.10` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.4.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.6` | `7.14.0` |\n| [cramjam](https://github.com/milesgranger/pyrus-cramjam) | `2.9.0` | `2.11.0` |\n| [cuda-bindings](https://github.com/NVIDIA/cuda-python) | `13.0.3` | `13.2.0` |\n| [cuda-pathfinder](https://github.com/NVIDIA/cuda-python) | `1.3.3` | `1.5.4` |\n| [cuda-toolkit](https://developer.nvidia.com/cuda-toolkit) | `13.0.2` | `13.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.26.3` | `0.57.0` |\n| [dataproperty](https://github.com/thombashi/DataProperty) | `1.0.1` | `1.1.1` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.3.1` |\n| [dill](https://github.com/uqfoundation/dill) | `0.3.8` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [einx](https://github.com/fferflo/einx) | `0.3.0` | `0.4.3` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastsafetensors](https://github.com/foundation-model-stack/fastsafetensors) | `0.2.2` | `0.3.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.55.0` | `4.63.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.5.0` | `1.8.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.24.2` | `2.30.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.2` | `2.53.0` |\n| [google-cloud-core](https://github.com/googleapis/google-cloud-python) | `2.4.3` | `2.6.0` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.4.0` | `3.10.1` |\n| [google-crc32c](https://github.com/googleapis/python-crc32c) | `1.7.1` | `1.8.0` |\n| [google-resumable-media](https://github.com/googleapis/google-resumable-media-python) | `2.7.2` | `2.9.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.3` | `3.5.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-reflection](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [harfile](https://github.com/schemathesis/harfile) | `0.3.0` | `0.4.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.4.3` | `1.5.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.0.0` | `3.3.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.10.2` | `1.15.0` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.11.0` | `4.15.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.152.8` |\n| [hypothesis-graphql](https://github.com/Stranger6667/hypothesis-graphql) | `0.11.1` | `0.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.15` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.5.0` |\n| [lazy-loader](https://github.com/scientific-python/lazy-loader) | `0.4` | `0.5` |\n| [librosa](https://github.com/librosa/librosa) | `0.10.2.post1` | `0.11.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.9.2` | `3.10.9` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.36.0` |\n| [mteb](https://github.com/embeddings-benchmark/mteb) | `2.8.3` | `2.12.30` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.1.0` | `6.7.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.2.1` | `3.4.2` |\n| [nvidia-cublas](https://developer.nvidia.com/cuda-zone) | `13.1.0.3` | `13.4.1.1` |\n| [nvidia-cuda-cupti](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [nvidia-cuda-nvrtc](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-cuda-runtime](https://developer.nvidia.com/cuda-zone) | `13.0.96` | `13.2.75` |\n| [nvidia-cudnn-cu13](https://developer.nvidia.com/cuda-zone) | `9.19.0.56` | `9.22.0.52` |\n| [nvidia-cufft](https://developer.nvidia.com/cuda-zone) | `12.0.0.61` | `12.2.0.46` |\n| [nvidia-cufile](https://developer.nvidia.com/cuda-zone) | `1.15.1.6` | `1.17.1.22` |\n| [nvidia-cusolver](https://developer.nvidia.com/cuda-zone) | `12.0.4.66` | `12.2.0.1` |\n| [nvidia-cusparse](https://developer.nvidia.com/cuda-zone) | `12.6.3.3` | `12.7.10.1` |\n| [nvidia-cusparselt-cu13](https://developer.nvidia.com/cusparselt) | `0.8.0` | `0.9.1` |\n| [nvidia-nccl-cu13](https://developer.nvidia.com/cuda-zone) | `2.28.9` | `2.30.4` |\n| [nvidia-nvjitlink](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-nvshmem-cu13](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.6.5` |\n| [nvidia-nvtx](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [opentelemetry-exporter-prometheus](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [pathvalidate](https://github.com/thombashi/pathvalidate) | `3.2.1` | `3.3.1` |\n| [peft](https://github.com/huggingface/peft) | `0.18.1` | `0.19.1` |\n| [perceptron](https://github.com/perceptron-ai-inc/perceptron) | `0.1.4` | `0.3.5` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.9.6` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.29.0` | `1.40.1` |\n| [pooch](https://github.com/fatiando/pooch) | `1.8.2` | `1.9.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.2.0` | `0.5.2` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.28.0` |\n| [pycryptodomex](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.1` | `2.46.4` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.10.5` | `2.11.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.0` | `3.3.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [pytest-subtests](https://github.com/pytest-dev/pytest-subtests) | `0.14.1` | `0.15.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) | `1.20` | `1.23` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.12.1` | `3.14.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.37.0` |\n| [responses](https://github.com/getsentry/responses) | `0.25.3` | `0.26.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.1` | `0.30.0` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.3` | `0.17.0` |\n| [sacrebleu](https://github.com/mjpost/sacrebleu) | `2.4.3` | `2.6.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.4.5` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.13.1` | `1.15.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.0` | `5.5.0` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.6.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tabulate](https://github.com/astanin/python-tabulate) | `0.9.0` | `0.10.0` |\n| [tensorizer](https://github.com/coreweave/tensorizer) | `2.10.1` | `2.12.1` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.1` |\n| [triton](https://github.com/triton-lang/triton) | `3.6.0` | `3.7.0` |\n| [tritonclient](https://github.com/triton-inference-server/client) | `2.64.0` | `2.68.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.47.0` |\n| [vector-quantize-pytorch](https://github.com/lucidrains/vector-quantizer-pytorch) | `1.21.2` | `1.29.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.7.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.7.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.23.0` |\n| [conch-triton-kernels](https://github.com/stackav-oss/conch) | `1.2.1` | `1.3` |\n\n\nUpdates `regex` from 2026.2.28 to 2026.5.9\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.5.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReverse matching with full unicode casefolding could lead to out-of-range string indexes.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eA fix for older Python versions before free-threading was  supported.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.4.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eMore fixes for free-threading.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\n\u003cp\u003eAdded prefixmatch as alias of match, like in re module.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.1.15\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/mrabarnett/mrab-regex/commit/e57d185bb711729091907b23edac5dcba0426243\"\u003e\u003ccode\u003ee57d185\u003c/code\u003e\u003c/a\u003e Reverse matching with full unicode casefolding lead to out-of-range string in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.5.9\"\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.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.3...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `transformers` from 5.5.3 to 5.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/transformers/releases\"\u003etransformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePatch release v5.8.1\u003c/h1\u003e\n\u003cp\u003eThis release is mainly to fix the Deepseek V4 integration!!!\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e[fix] Add fatal_error to ContinuousBatchingManager so the serving... by \u003ca href=\"https://github.com/qgallouedec\"\u003e\u003ccode\u003e@​qgallouedec\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/remi-or\"\u003e\u003ccode\u003e@​remi-or\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix WeightConverter regex incorrectly matching shared_experts as experts by \u003ca href=\"https://github.com/silencelamb\"\u003e\u003ccode\u003e@​silencelamb\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/claude\"\u003e\u003ccode\u003e@​claude\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix deepseek v4 by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45892\"\u003e#45892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeepseek v4 csa mask collapse by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Sawyer117\"\u003e\u003ccode\u003e@​Sawyer117\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45928\"\u003e#45928\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 5.8.0\u003c/h2\u003e\n\u003ch1\u003eRelease v5.8.0\u003c/h1\u003e\n\u003ch2\u003eNew Model additions\u003c/h2\u003e\n\u003ch3\u003eDeepSeek-V4\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eDeepSeek-V4 is the next-generation MoE (Mixture of Experts) language model from DeepSeek that introduces several architectural innovations over DeepSeek-V3. The architecture replaces Multi-head Latent Attention (MLA) with a hybrid local + long-range attention design, swaps residual connections for Manifold-Constrained Hyper-Connections (mHC), and bootstraps the first few MoE layers with a static token-id → expert-id hash table. This implementation covers DeepSeek-V4-Flash, DeepSeek-V4-Pro, and their -Base pretrained variants, which share the same architecture but differ in width, depth, expert count and weights.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/deepseek_v4\"\u003eDocumentation\u003c/a\u003e | \u003ca href=\"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash/blob/main/DeepSeek_V4.pdf\"\u003ePaper\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd DeepSeek V4 (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45643\"\u003e#45643\u003c/a\u003e) by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45643\"\u003e#45643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGemma 4 Assistant\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eGemma 4 Assistant is a small, text-only model that enables speculative decoding for Gemma 4 models using the Multi-Token Prediction (MTP) method and associated candidate generator. The model shares the same Gemma4TextModel backbone as other Gemma 4 models but uses KV sharing throughout the entire model, allowing it to reuse the KV cache populated by the target model and skip the pre-fill phase entirely. This architecture includes cross-attention to make the most of the target model's context, allowing the assistant to accurately predict more drafted tokens per drafting round.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/gemma4_assistant\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFirst model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45788\"\u003e#45788\u003c/a\u003e) by \u003ca href=\"https://github.com/SindhuRaghuram97\"\u003e\u003ccode\u003e@​SindhuRaghuram97\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45788\"\u003e#45788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGraniteSpeechPlus\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eGranite Speech Plus is a variant of Granite Speech that enhances the projector by consuming the concatenation of the encoder's final hidden states with an arbitrary subset of its intermediate hidden states along the feature dimension. It is a multimodal speech-to-text model that can transcribe audio, provide speaker annotation and word level timestamps by responding to text prompts. The model inherits the same architecture components as Granite Speech including the speech encoder, query transformer projector, language model, and optional LoRA adapter.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/granite_speech_plus\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for a new Granite-Speech-Plus model (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45695\"\u003e#45695\u003c/a\u003e) by \u003ca href=\"https://github.com/zvik\"\u003e\u003ccode\u003e@​zvik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45695\"\u003e#45695\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGranite4Vision\u003c/h3\u003e\n\u003cp\u003eGranite Vision 4.1 is a vision-language model from IBM Research designed for enterprise-grade document data extraction. It specializes in chart extraction (Chart2CSV, Chart2Summary, Chart2Code), table extraction (JSON, HTML, OTSL), and semantic key-value pair extraction. The model builds on LLaVA-NeXT with architectural innovations including SigLIP2 Vision Encoder, Window Q-Former Projectors, and DeepStack Feature Injection with 8 vision-to-LLM injection points.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/granite4_vision\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Granite 4.1 Vision (granite4_vision) (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45597\"\u003e#45597\u003c/a\u003e) by \u003ca href=\"https://github.com/artem-spector\"\u003e\u003ccode\u003e@​artem-spector\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45597\"\u003e#45597\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/huggingface/transformers/commit/cc832f9055ba11c8c55f918ab4bda9472b910d48\"\u003e\u003ccode\u003ecc832f9\u003c/code\u003e\u003c/a\u003e up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/f966d7b36278c7ca15967af062c4556f8bf4eea4\"\u003e\u003ccode\u003ef966d7b\u003c/code\u003e\u003c/a\u003e Deepseek v4 csa mask collapse (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45928\"\u003e#45928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/283f3f08614c0ee09e0bdc60d57dbc4d8d37af39\"\u003e\u003ccode\u003e283f3f0\u003c/code\u003e\u003c/a\u003e Fix deepseek v4 (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45892\"\u003e#45892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/4e0be9c4c5f2edb62f2e28c28c4149d3b84a3ae0\"\u003e\u003ccode\u003e4e0be9c\u003c/code\u003e\u003c/a\u003e Fix WeightConverter regex incorrectly matching shared_experts as experts in D...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/ec852625706cbe9a1264949659dad82b43fafa57\"\u003e\u003ccode\u003eec85262\u003c/code\u003e\u003c/a\u003e [fix] Add \u003ccode\u003efatal_error\u003c/code\u003e to \u003ccode\u003eContinuousBatchingManager\u003c/code\u003e so the serving layer c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/049d2bf1220747b6d39e2a978b9f5fe0defa1dca\"\u003e\u003ccode\u003e049d2bf\u003c/code\u003e\u003c/a\u003e v5.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/2871cafffb3b221b5f1df7e59033a15a7830309f\"\u003e\u003ccode\u003e2871caf\u003c/code\u003e\u003c/a\u003e Add Granite 4.1 Vision (granite4_vision) (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45597\"\u003e#45597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/aaec1092d413d0ea7249101ea43f74b5d6d60936\"\u003e\u003ccode\u003eaaec109\u003c/code\u003e\u003c/a\u003e fix: correct spelling in continuous_api docstring (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45749\"\u003e#45749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/7050d0e0bf5a97c7c0149c319681601373621eae\"\u003e\u003ccode\u003e7050d0e\u003c/code\u003e\u003c/a\u003e Fix link to modular transformers documentation (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45746\"\u003e#45746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/df2f2b539902c78db6a0f71fb2c175880e390576\"\u003e\u003ccode\u003edf2f2b5\u003c/code\u003e\u003c/a\u003e Gemma4: fix failed test cases (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45568\"\u003e#45568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/transformers/compare/v5.5.3...v5.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.2 to 0.23.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.23.1\u003c/h2\u003e\n\u003ch2\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003etokenizers 0.23.1\u003c/code\u003e is the first proper stable release in the \u003ccode\u003e0.23\u003c/code\u003e line — \u003ccode\u003e0.23.0\u003c/code\u003e only ever shipped as \u003ccode\u003erc0\u003c/code\u003e because the release pipeline itself was broken (Node side hadn't shipped multi-platform binaries since 2023, Python side was on \u003ccode\u003epyo3 0.27\u003c/code\u003e without free-threaded support). \u003ccode\u003e0.23.1\u003c/code\u003e is the version where everything actually goes out the door together: full Node multi-platform wheels for the first time in years, Python 3.14 (regular \u003cstrong\u003eand\u003c/strong\u003e free-threaded \u003ccode\u003e3.14t\u003c/code\u003e), full type hints for every Python class, and a stack of measurable perf wins on the BPE / added-vocab hot paths.\u003c/p\u003e\n\u003cp\u003eThere is no functional \u003ccode\u003e0.23.0\u003c/code\u003e published — we tag \u003ccode\u003e0.23.1\u003c/code\u003e directly so users don't accidentally pull a never-shipped version.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🚨 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDrop Python 3.9\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1952\"\u003e#1952\u003c/a\u003e) — \u003ccode\u003erequires-python = \u0026quot;\u0026gt;=3.10\u0026quot;\u003c/code\u003e; 3.9 users stay on \u003ccode\u003e0.22.x\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eadd_tokens\u003c/code\u003e normalizes \u003ccode\u003econtent\u003c/code\u003e at insertion\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e) — re-saved \u003ccode\u003etokenizer.json\u003c/code\u003e may differ in the \u003ccode\u003eadded_tokens\u003c/code\u003e block. Existing files load unchanged.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eType stubs are precise\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1928\"\u003e#1928\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1997\"\u003e#1997\u003c/a\u003e) — methods that returned \u003ccode\u003eAny\u003c/code\u003e now return real types; \u003ccode\u003emypy --strict\u003c/code\u003e may surface previously-hidden errors. Stub layout also moved from \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;/__init__.pyi\u003c/code\u003e to \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;.pyi\u003c/code\u003e. This breaks the surface of some of the processors like \u003ccode\u003eRobertaProcessign\u003c/code\u003e's \u003ccode\u003e__init__\u003c/code\u003e .\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e3.14t-only\u003c/strong\u003e: setters/getters return \u003ccode\u003ePyResult\u0026lt;T\u0026gt;\u003c/code\u003e because of \u003ccode\u003eArc\u0026lt;RwLock\u0026lt;Tokenizer\u0026gt;\u0026gt;\u003c/code\u003e; a poisoned lock surfaces as \u003ccode\u003ePyException\u003c/code\u003e instead of a panic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e⚡ Performance — measured locally on this Mac, not lifted from PRs\u003c/h2\u003e\n\u003cp\u003eRun with \u003ccode\u003ecargo bench --bench \u0026lt;name\u0026gt; -- --save-baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.22.2\u003c/code\u003e, then \u003ccode\u003e--baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.23.1\u003c/code\u003e. Numbers are point-in-time wall clock on a single laptop; relative deltas are what matters, absolute numbers will differ on CI hardware.\u003c/p\u003e\n\u003ch3\u003eAdded-vocabulary deserialize — the headline win (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003ebench: improve added_vocab_deserialize to reflect real-world workloads\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2000\"\u003e#2000\u003c/a\u003e) is now representative of how transformers actually loads tokenizer.json files. The combined effect of \u003ccode\u003edaachorse\u003c/code\u003e for the matching automaton plus the normalize-on-insert refactor is enormous on this workload:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~410 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e248 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.1 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e273 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~395 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e235 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.4 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e290 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e400k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~15 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e980 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−94%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eReal-world impact: loading a Llama-3-style tokenizer with a large set of added tokens dropped from \u0026quot;noticeable pause\u0026quot; to \u0026quot;instant\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eBPE encode\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch, no cache\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e530 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e446 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−16%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch\u003c/code\u003e (cached)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e690 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e685 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode\u003c/code\u003e (single)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.95 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.94 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (small)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e32.6 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e31.5 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−3%\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (big)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.01 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e988 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−2%\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe BPE per-thread cache PR (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e) shows much larger wins on highly-parallel workloads (+47–62% at 88+ threads on a server box, per the PR's own measurements on Vera). Single-thread batch numbers above are flat or slightly improved because cache-hit overhead was already low without contention.\u003c/p\u003e\n\u003ch3\u003eLlama-3 encode\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/huggingface/tokenizers/commit/7f1623b90b5adfb9bc327d4c3468d2f70bbce262\"\u003e\u003ccode\u003e7f1623b\u003c/code\u003e\u003c/a\u003e Bump version to 0.23.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bbe43ad73d8fc8932b9d0e657ddee3cd70c649a4\"\u003e\u003ccode\u003ebbe43ad\u003c/code\u003e\u003c/a\u003e ci: release workflow fixes (node + python) (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2043\"\u003e#2043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ab0c5d8fc13eb1c5001d9c06806635e2b5a42e9f\"\u003e\u003ccode\u003eab0c5d8\u003c/code\u003e\u003c/a\u003e Fix node release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2034\"\u003e#2034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/decd8e07dad15f296c0adc2bc3a560f62d3de2eb\"\u003e\u003ccode\u003edecd8e0\u003c/code\u003e\u003c/a\u003e bindings/python: free-threaded Python (3.14t) support (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2041\"\u003e#2041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/3992692d483bf3177219b52cb101b1bb055c18e6\"\u003e\u003ccode\u003e3992692\u003c/code\u003e\u003c/a\u003e update for release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2033\"\u003e#2033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bcdd25b97fcd78549903082ecf3ddd87d42c456b\"\u003e\u003ccode\u003ebcdd25b\u003c/code\u003e\u003c/a\u003e BPE cache: per-thread read-through cache to avoid RwLock atomics on hits (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/618eb383f43e207139eb5cdb9bca17796b5e9bd7\"\u003e\u003ccode\u003e618eb38\u003c/code\u003e\u003c/a\u003e Bump follow-redirects in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b6b1688bef2e87efc91af18edf7ac38b4d2dfbe6\"\u003e\u003ccode\u003eb6b1688\u003c/code\u003e\u003c/a\u003e chore: bump doc-builder SHA for PR upload workflow (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2025\"\u003e#2025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/19015d6b44aa3896626de5092e4171aed1b56d5b\"\u003e\u003ccode\u003e19015d6\u003c/code\u003e\u003c/a\u003e fix: use uvx --with cairosvg instead of uv pip install --system (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/efbcc68e321c364c8f9541f1c93a158df54d7da4\"\u003e\u003ccode\u003eefbcc68\u003c/code\u003e\u003c/a\u003e Ci benchmarks (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2019\"\u003e#2019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.2...v0.23.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\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/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.0 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\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/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.0...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003c...\n\n_Description has been truncated_","html_url":"https://github.com/vllm-project/vllm/pull/42717","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vllm-project%2Fvllm/issues/42717","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42717/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-05-15T04:46:49.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4451330003","node_id":"PR_kwDOSdbhSc7byPSZ","number":39,"state":"closed","title":"Bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-15T04:46:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T04:46:49.000Z","updated_at":"2026-05-15T04:47:07.000Z","time_to_close":10,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/damariskoech/aio-http-/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/damariskoech%2Faio-http-/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-05-08T21:42:28.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4409576139","node_id":"PR_kwDONrwnDc7ZslCF","number":581,"state":"closed","title":"chore(deps): bump the production group across 1 directory with 52 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-05-29T23:35:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T21:42:28.000Z","updated_at":"2026-05-29T23:35:57.000Z","time_to_close":1821207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production","update_count":52,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.7","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"fastapi","old_version":"0.120.3","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cli","old_version":"0.0.7","new_version":"0.0.24","repository_url":"https://github.com/fastapi/fastapi-cli"},{"name":"fastapi-keycloak-middleware","old_version":"1.2.0","new_version":"1.6.0"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.10","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jwcrypto","old_version":"1.5.6","new_version":"1.5.7","repository_url":"https://github.com/latchset/jwcrypto"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"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":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.1","new_version":"2.46.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-asyncio","old_version":"0.15.1","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"rfc3986","old_version":"1.5.0","new_version":"2.0.0","repository_url":"https://github.com/python-hyper/rfc3986"},{"name":"rich","old_version":"14.0.0","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rich-toolkit","old_version":"0.14.1","new_version":"0.19.7"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlmodel","old_version":"0.0.22","new_version":"0.0.38","repository_url":"https://github.com/fastapi/sqlmodel"},{"name":"starlette","old_version":"0.49.1","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.30.6","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"14.2","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"attrs","old_version":"25.3.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"cached-property","old_version":"1.5.2","new_version":"2.0.1","repository_url":"https://github.com/pydanny/cached-property"},{"name":"filelock","old_version":"3.20.3","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-keycloak","old_version":"4.7.3","new_version":"7.1.1","repository_url":"https://github.com/marcospereirampj/python-keycloak"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production group with 52 updates in the /ichub-backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.13.0` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.5.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.3` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `48.0.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.120.3` | `0.136.1` |\n| [fastapi-cli](https://github.com/fastapi/fastapi-cli) | `0.0.7` | `0.0.24` |\n| fastapi-keycloak-middleware | `1.2.0` | `1.6.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.5.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.13` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jwcrypto](https://github.com/latchset/jwcrypto) | `1.5.6` | `1.5.7` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.2` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.2` | `2.13.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.33.1` | `2.46.4` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.15.1` | `1.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.27` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [rfc3986](https://github.com/python-hyper/rfc3986) | `1.5.0` | `2.0.0` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `15.0.0` |\n| rich-toolkit | `0.14.1` | `0.19.7` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.49` |\n| [sqlmodel](https://github.com/fastapi/sqlmodel) | `0.0.22` | `0.0.38` |\n| [starlette](https://github.com/Kludex/starlette) | `0.49.1` | `1.0.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.1` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.46.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.4` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `14.2` | `16.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [attrs](https://github.com/python-attrs/attrs) | `25.3.0` | `26.1.0` |\n| [cached-property](https://github.com/pydanny/cached-property) | `1.5.2` | `2.0.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.29.0` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-keycloak](https://github.com/marcospereirampj/python-keycloak) | `4.7.3` | `7.1.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n\n\nUpdates `anyio` from 4.9.0 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged all functions currently raising the private \u003ccode\u003eNoCurrentAsyncBackend\u003c/code\u003e exception (since v4.12.0) to instead raise the public \u003ccode\u003eNoEventLoopError\u003c/code\u003e exception (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e not working with instance methods (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003etask call graphs\u003c/a\u003e on Python 3.14 and later when using AnyIO's task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ewinloop\u003c/a\u003e implementation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/960\"\u003e#960\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1019\"\u003e#1019\u003c/a\u003e; requires Python 3.10 or later when using Trio)\u003c/li\u003e\n\u003cli\u003eAdded parameters \u003ccode\u003ecase_sensitive\u003c/code\u003e and \u003ccode\u003erecurse_symlinks\u003c/code\u003e along with support for path-like objects to \u003ccode\u003eanyio.Path.glob()\u003c/code\u003e and \u003ccode\u003eanyio.Path.rglob()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1033\"\u003e#1033\u003c/a\u003e; PR by \u003ca href=\"https://github.com/northisup\"\u003e\u003ccode\u003e@​northisup\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and \u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in such cases (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1002\"\u003e#1002\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from \u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1011\"\u003e#1011\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the presence of the pytest plugin causing breakage with older versions of pytest (\u0026lt;= 6.1.2) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1028\"\u003e#1028\u003c/a\u003e; PR by \u003ca href=\"https://github.com/saper\"\u003e\u003ccode\u003e@​saper\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a rarely occurring \u003ccode\u003eRuntimeError: Set changed size during iteration\u003c/code\u003e while shutting down the process pool when using the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\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/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.2.2.post1 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs 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/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ 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/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml 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/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI 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/build/pull/1056\"\u003epypa/build#1056\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/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links 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/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change 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/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip 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/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\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/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines 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/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run 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/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 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/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation 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/build/pull/1050\"\u003epypa/build#1050\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/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate 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/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports 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/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes 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/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations 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/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT 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/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI 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/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET 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/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL 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/build/pull/1029\"\u003epypa/build#1029\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/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\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/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.04.22\"\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.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\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\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.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\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\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/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.1...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.2 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/click/8.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\u003c/a\u003e\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\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/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.7 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\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/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.7...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.7.0 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.10.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\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/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns/btreezone.py provides another zone versioned implementation built on top of a\nB-tree.  It maintains DNSSEC sort order, labels nodes as delegation points or glue,\nand can find the \u0026quot;bounds\u0026quot; of a name (useful for DNSSEC responses).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/query.py now provides make_socket(), make_ssl_socket(), and make_ssl_context()\nto make using persistent connections with the query code easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/win32util.py now supports explicitly setting the configuration method used to get\nsystem dns info, using the set_config_method() function.   There is a new configuration\nmethod that uses the Win32 API, which can be set using\nset_config_method(ConfigMethod.Win32).  We are considering making the Win32 API\nthe default in the future as we believe it to be the most accurate.  Any feedback on\nit compared to the other methods is welcome.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSYNC record is now supported.  This type is still in draft stage at the IETF\nand is subject to change.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.10.\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/rthalley/dnspython/commit/77fd94cd9716faf23e0a6e333f6568fc24284402\"\u003e\u003ccode\u003e77fd94c\u003c/code\u003e\u003c/a\u003e 2.8.0 versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/884f38345a8152342fe8ab5da8db9aab654051ba\"\u003e\u003ccode\u003e884f383\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/1938fe331f97376bf91c028fbfb8c7588c1b84f4\"\u003e\u003ccode\u003e1938fe3\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a35d6925efe20744e8cf7545d19d03ba06e7ab6f\"\u003e\u003ccode\u003ea35d692\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c862baaf0d0aa36d2e7003dfe226cd6ad4d827c4\"\u003e\u003ccode\u003ec862baa\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/0945d5923d58048c17325975f70f0738c87570b4\"\u003e\u003ccode\u003e0945d59\u003c/code\u003e\u003c/a\u003e more lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/8fa6766d2f7a2431372fc912fb334e752290ebf2\"\u003e\u003ccode\u003e8fa6766\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/641633503ee6b07bf382594ac04707072b90de18\"\u003e\u003ccode\u003e6416335\u003c/code\u003e\u003c/a\u003e Type syntax (\u003ca href=\"https://redirect.github.com/rthalley/dnspython/issues/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a4591447b7d6e38479bcddb14de3b69f314e7009\"\u003e\u003ccode\u003ea459144\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a0d5f172e89f30709b47b59fb0919d8cf137f611\"\u003e\u003ccode\u003ea0d5f17\u003c/code\u003e\u003c/a\u003e fix the all entries\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.7.0...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `email-validator` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JoshData/python-email-validator/releases\"\u003eemail-validator's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/blob/main/CHANGELOG.md\"\u003eemail-validator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.0 (August 26, 2025)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/commit/030a63a183a6a66450e98381ca9a23ab9769706a\"\u003e\u003ccode\u003e030a63a\u003c/code\u003e\u003c/a\u003e Version 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/e943a0f07f5c130b4a419e0cd79f705f36bf24fe\"\u003e\u003ccode\u003ee943a0f\u003c/code\u003e\u003c/a\u003e Raise TypeError when an invalid argument is passed for email, closes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/155\"\u003e#155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/f90d256045dc1ccbcffd5514189267d14a9e3ea1\"\u003e\u003ccode\u003ef90d256\u003c/code\u003e\u003c/a\u003e Remove local part length check unless new strict flag is given, fixes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/158\"\u003e#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/98800bac023b8713351393a5043034065f1ea6cb\"\u003e\u003ccode\u003e98800ba\u003c/code\u003e\u003c/a\u003e Add explicit checks for internationalized domain name characters invalid unde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/936aead3bf5c608f8561954e0d2955b7f97bfdad\"\u003e\u003ccode\u003e936aead\u003c/code\u003e\u003c/a\u003e Fix final syntax checks on normalized internationalized domains checking the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/8043de49596f08d54a07e2bc7c442ced074216a6\"\u003e\u003ccode\u003e8043de4\u003c/code\u003e\u003c/a\u003e NFC-normalize display names per UTS \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/39\"\u003e#39\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/bc08faa2a74b51a9e7ba7ff4f995c0b475cb5b12\"\u003e\u003ccode\u003ebc08faa\u003c/code\u003e\u003c/a\u003e Add one-off error messages for full-width-at and small-commercial-at which ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/a1c90ab58fb0f5d969a8351a68ca15bff068527c\"\u003e\u003ccode\u003ea1c90ab\u003c/code\u003e\u003c/a\u003e Split exceptions_types.py into exceptions.py and types.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/dbcf07cc5c8066c14b6dc58d2dbb4a1e582eeefd\"\u003e\u003ccode\u003edbcf07c\u003c/code\u003e\u003c/a\u003e Change package name from using underscore to dash to match PyPi normalized pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/7c22208ee5b82c377e960ddcea5293691eadc6cc\"\u003e\u003ccode\u003e7c22208\u003c/code\u003e\u003c/a\u003e Support ALLOW_DISPLAY_NAME and ALLOW_EMPTY_LOCAL in the CLI (\u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JoshData/python-email-validator/compare/v2.2.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.1\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/eclipse-tractusx/industry-core-hub/pull/581","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-tractusx%2Findustry-core-hub/issues/581","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/581/packages"}},{"old_version":"2.0.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-05-04T05:33:52.000Z","version_change":"2.0.0 → 2.3.0","issue":{"uuid":"4374224451","node_id":"PR_kwDOI7xefs7X4umm","number":41606,"state":"closed","title":"Bump the minor-update group across 1 directory with 140 updates","user":"dependabot[bot]","labels":["rocm","ci/build","nvidia","dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-05-05T23:42:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-04T05:33:52.000Z","updated_at":"2026-05-05T23:42:43.000Z","time_to_close":151729,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-update","update_count":140,"packages":[{"name":"regex","old_version":"2026.2.28","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"transformers","old_version":"5.5.3","new_version":"5.7.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.12.0","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"prometheus-client","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"lark","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"filelock","old_version":"3.16.1","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"opentelemetry-sdk","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-api","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"fastsafetensors","old_version":"0.2.2","new_version":"0.3","repository_url":"https://github.com/foundation-model-stack/fastsafetensors"},{"name":"absl-py","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/abseil/abseil-py"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.6.2.post1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argcomplete","old_version":"3.5.1","new_version":"3.6.3","repository_url":"https://github.com/kislyuk/argcomplete"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"audioread","old_version":"3.0.1","new_version":"3.1.0","repository_url":"https://github.com/beetbox/audioread"},{"name":"azure-core","old_version":"1.38.2","new_version":"1.40.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"blobfile","old_version":"3.0.0","new_version":"3.2.0","repository_url":"https://github.com/blobfile/blobfile"},{"name":"bm25s","old_version":"0.2.13","new_version":"0.3.8","repository_url":"https://github.com/xhluca/bm25s"},{"name":"boto3","old_version":"1.35.57","new_version":"1.43.3","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.57","new_version":"1.43.3","repository_url":"https://github.com/boto/botocore"},{"name":"click","old_version":"8.1.7","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.10.6","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cramjam","old_version":"2.9.0","new_version":"2.11.0","repository_url":"https://github.com/milesgranger/pyrus-cramjam"},{"name":"cuda-bindings","old_version":"13.0.3","new_version":"13.2.0","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-pathfinder","old_version":"1.3.3","new_version":"1.5.4","repository_url":"https://github.com/NVIDIA/cuda-python"},{"name":"cuda-toolkit","old_version":"13.0.2","new_version":"13.2.1"},{"name":"datamodel-code-generator","old_version":"0.26.3","new_version":"0.56.1","repository_url":"https://github.com/koxudaxi/datamodel-code-generator"},{"name":"dataproperty","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/thombashi/DataProperty"},{"name":"decorator","old_version":"5.1.1","new_version":"5.2.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dill","old_version":"0.3.8","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"einx","old_version":"0.3.0","new_version":"0.4.3","repository_url":"https://github.com/fferflo/einx"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fonttools","old_version":"4.55.0","new_version":"4.62.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.5.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"google-api-core","old_version":"2.24.2","new_version":"2.30.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth","old_version":"2.40.2","new_version":"2.50.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"google-cloud-core","old_version":"2.4.3","new_version":"2.5.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-storage","old_version":"3.4.0","new_version":"3.10.1","repository_url":"https://github.com/googleapis/python-storage"},{"name":"google-crc32c","old_version":"1.7.1","new_version":"1.8.0","repository_url":"https://github.com/googleapis/python-crc32c"},{"name":"google-resumable-media","old_version":"2.7.2","new_version":"2.8.2","repository_url":"https://github.com/googleapis/google-resumable-media-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.74.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.3","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-reflection","old_version":"1.78.0","new_version":"1.80.0"},{"name":"h11","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/python-hyper/h11"},{"name":"harfile","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/schemathesis/harfile"},{"name":"hiredis","old_version":"3.0.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"huggingface-hub","old_version":"1.10.2","new_version":"1.13.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"humanize","old_version":"4.11.0","new_version":"4.15.0","repository_url":"https://github.com/python-humanize/humanize"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.152.4","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"hypothesis-graphql","old_version":"0.11.1","new_version":"0.12.0","repository_url":"https://github.com/Stranger6667/hypothesis-graphql"},{"name":"idna","old_version":"3.10","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/nucleic/kiwi"},{"name":"lazy-loader","old_version":"0.4","new_version":"0.5","repository_url":"https://github.com/scientific-python/lazy-loader"},{"name":"librosa","old_version":"0.10.2.post1","new_version":"0.11.0","repository_url":"https://github.com/librosa/librosa"},{"name":"matplotlib","old_version":"3.9.2","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msal","old_version":"1.34.0","new_version":"1.36.0","repository_url":"https://github.com/AzureAD/microsoft-authentication-library-for-python"},{"name":"mteb","old_version":"2.8.3","new_version":"2.12.30","repository_url":"https://github.com/embeddings-benchmark/mteb"},{"name":"multidict","old_version":"6.1.0","new_version":"6.7.1","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":"networkx","old_version":"3.2.1","new_version":"3.4.2","repository_url":"https://github.com/networkx/networkx"},{"name":"nvidia-cublas","old_version":"13.1.0.3","new_version":"13.4.1.1"},{"name":"nvidia-cuda-cupti","old_version":"13.0.85","new_version":"13.2.75"},{"name":"nvidia-cuda-nvrtc","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-cuda-runtime","old_version":"13.0.96","new_version":"13.2.75"},{"name":"nvidia-cudnn-cu13","old_version":"9.19.0.56","new_version":"9.21.1.3"},{"name":"nvidia-cufft","old_version":"12.0.0.61","new_version":"12.2.0.46"},{"name":"nvidia-cufile","old_version":"1.15.1.6","new_version":"1.17.1.22"},{"name":"nvidia-cusolver","old_version":"12.0.4.66","new_version":"12.2.0.1"},{"name":"nvidia-cusparse","old_version":"12.6.3.3","new_version":"12.7.10.1"},{"name":"nvidia-cusparselt-cu13","old_version":"0.8.0","new_version":"0.9.1"},{"name":"nvidia-nccl-cu13","old_version":"2.28.9","new_version":"2.30.4"},{"name":"nvidia-nvjitlink","old_version":"13.0.88","new_version":"13.2.78"},{"name":"nvidia-nvshmem-cu13","old_version":"3.4.5","new_version":"3.6.5"},{"name":"nvidia-nvtx","old_version":"13.0.85","new_version":"13.2.75"},{"name":"opentelemetry-exporter-prometheus","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.35.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.56b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pathvalidate","old_version":"3.2.1","new_version":"3.3.1","repository_url":"https://github.com/thombashi/pathvalidate"},{"name":"peft","old_version":"0.18.1","new_version":"0.19.1","repository_url":"https://github.com/huggingface/peft"},{"name":"perceptron","old_version":"0.1.4","new_version":"0.2.1","repository_url":"https://github.com/perceptron-ai-inc/perceptron"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.9.6","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":"polars","old_version":"1.29.0","new_version":"1.40.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"pooch","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/fatiando/pooch"},{"name":"propcache","old_version":"0.2.0","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.27.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pycryptodomex","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/Legrandin/pycryptodome"},{"name":"pydantic-core","old_version":"2.41.1","new_version":"2.46.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-extra-types","old_version":"2.10.5","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pygments","old_version":"2.18.0","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.2.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-subtests","old_version":"0.14.1","new_version":"0.15.0","repository_url":"https://github.com/pytest-dev/pytest-subtests"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"python-rapidjson","old_version":"1.20","new_version":"1.23","repository_url":"https://github.com/python-rapidjson/python-rapidjson"},{"name":"rapidfuzz","old_version":"3.12.1","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.35.1","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"responses","old_version":"0.25.3","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"rpds-py","old_version":"0.20.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"s3transfer","old_version":"0.10.3","new_version":"0.17.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sacrebleu","old_version":"2.4.3","new_version":"2.6.0","repository_url":"https://github.com/mjpost/sacrebleu"},{"name":"safetensors","old_version":"0.4.5","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.5.2","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.13.1","new_version":"1.15.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"5.2.0","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smart-open","old_version":"7.1.0","new_version":"7.6.0","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"structlog","old_version":"25.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tabulate","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/astanin/python-tabulate"},{"name":"tblib","old_version":"3.1.0","new_version":"3.2.2","repository_url":"https://github.com/ionelmc/python-tblib"},{"name":"tensorizer","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/coreweave/tensorizer"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"tritonclient","old_version":"2.64.0","new_version":"2.68.0","repository_url":"https://github.com/triton-inference-server/client"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"vector-quantize-pytorch","old_version":"1.21.2","new_version":"1.28.2","repository_url":"https://github.com/lucidrains/vector-quantizer-pytorch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.7.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xxhash","old_version":"3.5.0","new_version":"3.7.0","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"yarl","old_version":"1.17.1","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"conch-triton-kernels","old_version":"1.2.1","new_version":"1.3","repository_url":"https://github.com/stackav-oss/conch"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-update group with 140 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.4.4` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.33.1` |\n| [transformers](https://github.com/huggingface/transformers) | `5.5.3` | `5.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.0` | `2.13.3` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.0` | `0.25.0` |\n| [lark](https://github.com/lark-parser/lark) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.16.1` | `3.29.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [fastsafetensors](https://github.com/foundation-model-stack/fastsafetensors) | `0.2.2` | `0.3` |\n| [absl-py](https://github.com/abseil/abseil-py) | `2.1.0` | `2.4.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.4` |\n| [anyio](https://github.com/agronholm/anyio) | `4.6.2.post1` | `4.13.0` |\n| [argcomplete](https://github.com/kislyuk/argcomplete) | `3.5.1` | `3.6.3` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [audioread](https://github.com/beetbox/audioread) | `3.0.1` | `3.1.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.40.0` |\n| [blobfile](https://github.com/blobfile/blobfile) | `3.0.0` | `3.2.0` |\n| [bm25s](https://github.com/xhluca/bm25s) | `0.2.13` | `0.3.8` |\n| [boto3](https://github.com/boto/boto3) | `1.35.57` | `1.43.3` |\n| [botocore](https://github.com/boto/botocore) | `1.35.57` | `1.43.3` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.6` | `7.13.5` |\n| [cramjam](https://github.com/milesgranger/pyrus-cramjam) | `2.9.0` | `2.11.0` |\n| [cuda-bindings](https://github.com/NVIDIA/cuda-python) | `13.0.3` | `13.2.0` |\n| [cuda-pathfinder](https://github.com/NVIDIA/cuda-python) | `1.3.3` | `1.5.4` |\n| [cuda-toolkit](https://developer.nvidia.com/cuda-toolkit) | `13.0.2` | `13.2.1` |\n| [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.26.3` | `0.56.1` |\n| [dataproperty](https://github.com/thombashi/DataProperty) | `1.0.1` | `1.1.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.1.1` | `5.2.1` |\n| [dill](https://github.com/uqfoundation/dill) | `0.3.8` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [einx](https://github.com/fferflo/einx) | `0.3.0` | `0.4.3` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.55.0` | `4.62.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.5.0` | `1.8.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.24.2` | `2.30.3` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.2` | `2.50.0` |\n| [google-cloud-core](https://github.com/googleapis/google-cloud-python) | `2.4.3` | `2.5.1` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.4.0` | `3.10.1` |\n| [google-crc32c](https://github.com/googleapis/python-crc32c) | `1.7.1` | `1.8.0` |\n| [google-resumable-media](https://github.com/googleapis/google-resumable-media-python) | `2.7.2` | `2.8.2` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.74.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.3` | `3.5.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-reflection](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [h11](https://github.com/python-hyper/h11) | `0.14.0` | `0.16.0` |\n| [harfile](https://github.com/schemathesis/harfile) | `0.3.0` | `0.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.0.0` | `3.3.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.10.2` | `1.13.0` |\n| [humanize](https://github.com/python-humanize/humanize) | `4.11.0` | `4.15.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.152.4` |\n| [hypothesis-graphql](https://github.com/Stranger6667/hypothesis-graphql) | `0.11.1` | `0.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.13` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.3.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.5.0` |\n| [lazy-loader](https://github.com/scientific-python/lazy-loader) | `0.4` | `0.5` |\n| [librosa](https://github.com/librosa/librosa) | `0.10.2.post1` | `0.11.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.9.2` | `3.10.9` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msal](https://github.com/AzureAD/microsoft-authentication-library-for-python) | `1.34.0` | `1.36.0` |\n| [mteb](https://github.com/embeddings-benchmark/mteb) | `2.8.3` | `2.12.30` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.1.0` | `6.7.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.2.1` | `3.4.2` |\n| [nvidia-cublas](https://developer.nvidia.com/cuda-zone) | `13.1.0.3` | `13.4.1.1` |\n| [nvidia-cuda-cupti](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [nvidia-cuda-nvrtc](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-cuda-runtime](https://developer.nvidia.com/cuda-zone) | `13.0.96` | `13.2.75` |\n| [nvidia-cudnn-cu13](https://developer.nvidia.com/cuda-zone) | `9.19.0.56` | `9.21.1.3` |\n| [nvidia-cufft](https://developer.nvidia.com/cuda-zone) | `12.0.0.61` | `12.2.0.46` |\n| [nvidia-cufile](https://developer.nvidia.com/cuda-zone) | `1.15.1.6` | `1.17.1.22` |\n| [nvidia-cusolver](https://developer.nvidia.com/cuda-zone) | `12.0.4.66` | `12.2.0.1` |\n| [nvidia-cusparse](https://developer.nvidia.com/cuda-zone) | `12.6.3.3` | `12.7.10.1` |\n| [nvidia-cusparselt-cu13](https://developer.nvidia.com/cusparselt) | `0.8.0` | `0.9.1` |\n| [nvidia-nccl-cu13](https://developer.nvidia.com/cuda-zone) | `2.28.9` | `2.30.4` |\n| [nvidia-nvjitlink](https://developer.nvidia.com/cuda-zone) | `13.0.88` | `13.2.78` |\n| [nvidia-nvshmem-cu13](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.6.5` |\n| [nvidia-nvtx](https://developer.nvidia.com/cuda-zone) | `13.0.85` | `13.2.75` |\n| [opentelemetry-exporter-prometheus](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.35.0` | `1.41.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.56b0` | `0.62b1` |\n| [pathvalidate](https://github.com/thombashi/pathvalidate) | `3.2.1` | `3.3.1` |\n| [peft](https://github.com/huggingface/peft) | `0.18.1` | `0.19.1` |\n| [perceptron](https://github.com/perceptron-ai-inc/perceptron) | `0.1.4` | `0.2.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.9.6` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.29.0` | `1.40.1` |\n| [pooch](https://github.com/fatiando/pooch) | `1.8.2` | `1.9.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.2.0` | `0.4.1` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.27.2` |\n| [pycryptodomex](https://github.com/Legrandin/pycryptodome) | `3.22.0` | `3.23.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.1` | `2.46.3` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.10.5` | `2.11.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.0` | `3.3.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [pytest-subtests](https://github.com/pytest-dev/pytest-subtests) | `0.14.1` | `0.15.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) | `1.20` | `1.23` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.12.1` | `3.14.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.37.0` |\n| [responses](https://github.com/getsentry/responses) | `0.25.3` | `0.26.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.1` | `0.30.0` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.3` | `0.17.0` |\n| [sacrebleu](https://github.com/mjpost/sacrebleu) | `2.4.3` | `2.6.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.4.5` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.5.2` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.13.1` | `1.15.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.0` | `5.4.1` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `7.1.0` | `7.6.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [structlog](https://github.com/hynek/structlog) | `25.4.0` | `25.5.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tabulate](https://github.com/astanin/python-tabulate) | `0.9.0` | `0.10.0` |\n| [tblib](https://github.com/ionelmc/python-tblib) | `3.1.0` | `3.2.2` |\n| [tensorizer](https://github.com/coreweave/tensorizer) | `2.10.1` | `2.12.1` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.1` |\n| [tritonclient](https://github.com/triton-inference-server/client) | `2.64.0` | `2.68.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.6.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.46.0` |\n| [vector-quantize-pytorch](https://github.com/lucidrains/vector-quantizer-pytorch) | `1.21.2` | `1.28.2` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.7.0` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.5.0` | `3.7.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [conch-triton-kernels](https://github.com/stackav-oss/conch) | `1.2.1` | `1.3` |\n\n\nUpdates `regex` from 2026.2.28 to 2026.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.4.4\"\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.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\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\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.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\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\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `transformers` from 5.5.3 to 5.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/transformers/releases\"\u003etransformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease v5.7.0\u003c/h1\u003e\n\u003ch2\u003eNew Model additions\u003c/h2\u003e\n\u003ch3\u003eLaguna\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eLaguna is Poolside's mixture-of-experts language model family that extends standard SwiGLU MoE transformers with two key innovations. It features per-layer head counts allowing different decoder layers to have different query-head counts while sharing the same KV cache shape, and implements a sigmoid MoE router with auxiliary-loss-free load balancing that uses element-wise sigmoid of gate logits plus learned per-expert bias for router scoring.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/laguna\"\u003eDocumentation\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLaguna XS.2 implementation (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45673\"\u003e#45673\u003c/a\u003e) by \u003ca href=\"https://github.com/joerowell\"\u003e\u003ccode\u003e@​joerowell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/45673\"\u003e#45673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDEIMv2\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eDEIMv2 (DETR with Improved Matching v2) is a real-time object detection model that extends DEIM with DINOv3 features and spans eight model sizes from X to Atto for diverse deployment scenarios. It uses a Spatial Tuning Adapter (STA) for larger variants to convert DINOv3's single-scale output into multi-scale features, while ultra-lightweight models employ pruned HGNetv2 backbones. The unified design achieves superior performance-cost trade-offs, with DEIMv2-X reaching 57.8 AP with only 50.3M parameters and DEIMv2-S being the first sub-10M model to exceed 50 AP on COCO.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinks:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/deimv2\"\u003eDocumentation\u003c/a\u003e | \u003ca href=\"https://huggingface.co/papers/2509.20787\"\u003ePaper\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003emodel: Add DEIMv2 to Transformers (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/44339\"\u003e#44339\u003c/a\u003e) by \u003ca href=\"https://github.com/harshaljanjani\"\u003e\u003ccode\u003e@​harshaljanjani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/pull/44339\"\u003e#44339\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAttention\u003c/h2\u003e\n\u003cp\u003eSeveral attention-related bugs were fixed across multiple models, including a cross-attention cache type error in T5Gemma2 for long inputs, incorrect cached forward behavior in Qwen3.5's gated-delta-net linear attention, and a crash in GraniteMoeHybrid when no Mamba layers are present. Attention function dispatch was also updated to align with the latest model implementations.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix cross-attention cache layer type for T5Gemma2 long inputs (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45540\"\u003e#45540\u003c/a\u003e) by \u003ca href=\"https://github.com/Beichen-Ma\"\u003e\u003ccode\u003e@​Beichen-Ma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45540\"\u003e#45540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Qwen3.5] Fix GDN linear attention multi-token cached forward (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45513\"\u003e#45513\u003c/a\u003e) by \u003ca href=\"https://github.com/kashif\"\u003e\u003ccode\u003e@​kashif\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45513\"\u003e#45513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GraniteMoeHybrid _update_mamba_mask crash on attention-only models (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45514\"\u003e#45514\u003c/a\u003e) by \u003ca href=\"https://github.com/tianhaocui\"\u003e\u003ccode\u003e@​tianhaocui\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45514\"\u003e#45514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlign latest model attention function dispatch (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45598\"\u003e#45598\u003c/a\u003e) by \u003ca href=\"https://github.com/Cyrilvallez\"\u003e\u003ccode\u003e@​Cyrilvallez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45598\"\u003e#45598\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTokenizers\u003c/h2\u003e\n\u003cp\u003eThere was a bug in AutoTokenizer that caused the wrong tokenizer class to be initialized. This caused regressions in models like DeepSeek R1.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003echange got reverted (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45680\"\u003e#45680\u003c/a\u003e) by \u003ca href=\"https://github.com/itazap\"\u003e\u003ccode\u003e@​itazap\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45680\"\u003e#45680\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneration\u003c/h2\u003e\n\u003cp\u003eContinuous batching generation received several fixes and improvements, including correcting KV deduplication and memory estimation for long sequences (16K+), and removing misleading warnings about \u003ccode\u003enum_return_sequences\u003c/code\u003e and other unsupported features that were incorrectly firing even when functionality worked correctly. Documentation for per-request sampling parameters was also added.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003egenerate: drop stale num_return_sequences warning on continuous batching path (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45582\"\u003e#45582\u003c/a\u003e) by \u003ca href=\"https://github.com/joaquinhuigomez\"\u003e\u003ccode\u003e@​joaquinhuigomez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45582\"\u003e#45582\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/huggingface/transformers/commit/6ffbb07f93d9e44457450d1150136309b0dc966b\"\u003e\u003ccode\u003e6ffbb07\u003c/code\u003e\u003c/a\u003e v5.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/18e7fd752e6fa7dd4ff8b828ff8f3aec5b0882ae\"\u003e\u003ccode\u003e18e7fd7\u003c/code\u003e\u003c/a\u003e change got reverted (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45680\"\u003e#45680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/2dff8f76f48abd7dd31b8dc156046509887d3cf1\"\u003e\u003ccode\u003e2dff8f7\u003c/code\u003e\u003c/a\u003e v5.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/93bed93e7518444cce442a89c78008fa0a21c963\"\u003e\u003ccode\u003e93bed93\u003c/code\u003e\u003c/a\u003e fixing more typos (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45689\"\u003e#45689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/a29e9675a864e2c7854a4d0f574589a8db1dac2e\"\u003e\u003ccode\u003ea29e967\u003c/code\u003e\u003c/a\u003e [docs] cb memory management (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45587\"\u003e#45587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/2d01799735d455f745b9c53d5a9d2eebdd7be569\"\u003e\u003ccode\u003e2d01799\u003c/code\u003e\u003c/a\u003e [docs] cpu offloading (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45660\"\u003e#45660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/4aba7167e328965caadcdfc6834b982037889f86\"\u003e\u003ccode\u003e4aba716\u003c/code\u003e\u003c/a\u003e docs(README_zh-hans): clarify conditions for not using Transformers (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45688\"\u003e#45688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/f4fc6d013864f5389b6518787438cf55359613d1\"\u003e\u003ccode\u003ef4fc6d0\u003c/code\u003e\u003c/a\u003e fix padding side issue for fast_vlm tests (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45592\"\u003e#45592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/5d7ff4393ab99aa7cadf4cccd1f814dbb799f2bb\"\u003e\u003ccode\u003e5d7ff43\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ex_clip\u003c/code\u003e: 8 failed test cases (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45394\"\u003e#45394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/transformers/commit/aadc005711da266af1f75c33185172af9d9f19bf\"\u003e\u003ccode\u003eaadc005\u003c/code\u003e\u003c/a\u003e zero_shot_object_detection ValueError fix for python 3.13 (\u003ca href=\"https://redirect.github.com/huggingface/transformers/issues/45669\"\u003e#45669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/transformers/compare/v5.5.3...v5.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.2 to 0.23.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.23.1\u003c/h2\u003e\n\u003ch2\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003etokenizers 0.23.1\u003c/code\u003e is the first proper stable release in the \u003ccode\u003e0.23\u003c/code\u003e line — \u003ccode\u003e0.23.0\u003c/code\u003e only ever shipped as \u003ccode\u003erc0\u003c/code\u003e because the release pipeline itself was broken (Node side hadn't shipped multi-platform binaries since 2023, Python side was on \u003ccode\u003epyo3 0.27\u003c/code\u003e without free-threaded support). \u003ccode\u003e0.23.1\u003c/code\u003e is the version where everything actually goes out the door together: full Node multi-platform wheels for the first time in years, Python 3.14 (regular \u003cstrong\u003eand\u003c/strong\u003e free-threaded \u003ccode\u003e3.14t\u003c/code\u003e), full type hints for every Python class, and a stack of measurable perf wins on the BPE / added-vocab hot paths.\u003c/p\u003e\n\u003cp\u003eThere is no functional \u003ccode\u003e0.23.0\u003c/code\u003e published — we tag \u003ccode\u003e0.23.1\u003c/code\u003e directly so users don't accidentally pull a never-shipped version.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🚨 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDrop Python 3.9\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1952\"\u003e#1952\u003c/a\u003e) — \u003ccode\u003erequires-python = \u0026quot;\u0026gt;=3.10\u0026quot;\u003c/code\u003e; 3.9 users stay on \u003ccode\u003e0.22.x\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eadd_tokens\u003c/code\u003e normalizes \u003ccode\u003econtent\u003c/code\u003e at insertion\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e) — re-saved \u003ccode\u003etokenizer.json\u003c/code\u003e may differ in the \u003ccode\u003eadded_tokens\u003c/code\u003e block. Existing files load unchanged.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eType stubs are precise\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1928\"\u003e#1928\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1997\"\u003e#1997\u003c/a\u003e) — methods that returned \u003ccode\u003eAny\u003c/code\u003e now return real types; \u003ccode\u003emypy --strict\u003c/code\u003e may surface previously-hidden errors. Stub layout also moved from \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;/__init__.pyi\u003c/code\u003e to \u003ccode\u003etokenizers/\u0026lt;sub\u0026gt;.pyi\u003c/code\u003e. This breaks the surface of some of the processors like \u003ccode\u003eRobertaProcessign\u003c/code\u003e's \u003ccode\u003e__init__\u003c/code\u003e .\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e3.14t-only\u003c/strong\u003e: setters/getters return \u003ccode\u003ePyResult\u0026lt;T\u0026gt;\u003c/code\u003e because of \u003ccode\u003eArc\u0026lt;RwLock\u0026lt;Tokenizer\u0026gt;\u0026gt;\u003c/code\u003e; a poisoned lock surfaces as \u003ccode\u003ePyException\u003c/code\u003e instead of a panic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e⚡ Performance — measured locally on this Mac, not lifted from PRs\u003c/h2\u003e\n\u003cp\u003eRun with \u003ccode\u003ecargo bench --bench \u0026lt;name\u0026gt; -- --save-baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.22.2\u003c/code\u003e, then \u003ccode\u003e--baseline v0_22_2\u003c/code\u003e on \u003ccode\u003ev0.23.1\u003c/code\u003e. Numbers are point-in-time wall clock on a single laptop; relative deltas are what matters, absolute numbers will differ on CI hardware.\u003c/p\u003e\n\u003ch3\u003eAdded-vocabulary deserialize — the headline win (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1995\"\u003e#1995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1999\"\u003e#1999\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003ebench: improve added_vocab_deserialize to reflect real-world workloads\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2000\"\u003e#2000\u003c/a\u003e) is now representative of how transformers actually loads tokenizer.json files. The combined effect of \u003ccode\u003edaachorse\u003c/code\u003e for the matching automaton plus the normalize-on-insert refactor is enormous on this workload:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~410 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e248 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.1 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e273 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~395 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e235 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−40%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e100k tokens, non-special, NFKC\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~7.4 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e290 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−96%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e400k tokens, special, no norm\u003c/td\u003e\n\u003ctd align=\"right\"\u003e~15 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e980 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−94%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eReal-world impact: loading a Llama-3-style tokenizer with a large set of added tokens dropped from \u0026quot;noticeable pause\u0026quot; to \u0026quot;instant\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eBPE encode\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ebenchmark\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.22.2\u003c/th\u003e\n\u003cth align=\"right\"\u003ev0.23.1\u003c/th\u003e\n\u003cth align=\"right\"\u003echange\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch, no cache\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e530 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e446 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e\u003cstrong\u003e−16%\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode batch\u003c/code\u003e (cached)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e690 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e685 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE GPT2 encode\u003c/code\u003e (single)\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.95 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.94 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003enoise\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (small)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e32.6 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e31.5 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−3%\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBPE Train (big)\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"right\"\u003e1.01 s\u003c/td\u003e\n\u003ctd align=\"right\"\u003e988 ms\u003c/td\u003e\n\u003ctd align=\"right\"\u003e−2%\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe BPE per-thread cache PR (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e) shows much larger wins on highly-parallel workloads (+47–62% at 88+ threads on a server box, per the PR's own measurements on Vera). Single-thread batch numbers above are flat or slightly improved because cache-hit overhead was already low without contention.\u003c/p\u003e\n\u003ch3\u003eLlama-3 encode\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/huggingface/tokenizers/commit/7f1623b90b5adfb9bc327d4c3468d2f70bbce262\"\u003e\u003ccode\u003e7f1623b\u003c/code\u003e\u003c/a\u003e Bump version to 0.23.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bbe43ad73d8fc8932b9d0e657ddee3cd70c649a4\"\u003e\u003ccode\u003ebbe43ad\u003c/code\u003e\u003c/a\u003e ci: release workflow fixes (node + python) (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2043\"\u003e#2043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ab0c5d8fc13eb1c5001d9c06806635e2b5a42e9f\"\u003e\u003ccode\u003eab0c5d8\u003c/code\u003e\u003c/a\u003e Fix node release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2034\"\u003e#2034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/decd8e07dad15f296c0adc2bc3a560f62d3de2eb\"\u003e\u003ccode\u003edecd8e0\u003c/code\u003e\u003c/a\u003e bindings/python: free-threaded Python (3.14t) support (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2041\"\u003e#2041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/3992692d483bf3177219b52cb101b1bb055c18e6\"\u003e\u003ccode\u003e3992692\u003c/code\u003e\u003c/a\u003e update for release (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2033\"\u003e#2033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/bcdd25b97fcd78549903082ecf3ddd87d42c456b\"\u003e\u003ccode\u003ebcdd25b\u003c/code\u003e\u003c/a\u003e BPE cache: per-thread read-through cache to avoid RwLock atomics on hits (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2028\"\u003e#2028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/618eb383f43e207139eb5cdb9bca17796b5e9bd7\"\u003e\u003ccode\u003e618eb38\u003c/code\u003e\u003c/a\u003e Bump follow-redirects in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b6b1688bef2e87efc91af18edf7ac38b4d2dfbe6\"\u003e\u003ccode\u003eb6b1688\u003c/code\u003e\u003c/a\u003e chore: bump doc-builder SHA for PR upload workflow (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2025\"\u003e#2025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/19015d6b44aa3896626de5092e4171aed1b56d5b\"\u003e\u003ccode\u003e19015d6\u003c/code\u003e\u003c/a\u003e fix: use uvx --with cairosvg instead of uv pip install --system (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/efbcc68e321c364c8f9541f1c93a158df54d7da4\"\u003e\u003ccode\u003eefbcc68\u003c/code\u003e\u003c/a\u003e Ci benchmarks (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/2019\"\u003e#2019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.2...v0.23.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\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/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.0 to 2.13.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd zizmor for GitHub Actions workflow linting by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13039\"\u003e#13039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jiter to v0.14.0 to fix a segmentation fault on musl Linux by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13064\"\u003e#13064\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow default factories of private attributes to take validated model data by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13013\"\u003e#13013\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\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/pydantic/pydantic/commit/9e9a11132c980c4ec84ff6d2df06d4c1a55ca8f3\"\u003e\u003ccode\u003e9e9a111\u003c/code\u003e\u003c/a\u003e Fix backported test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1ec8c6aa0cae1c78409c6f31af738a24e16c7124\"\u003e\u003ccode\u003e1ec8c6a\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fb4f2044436e9fa4ff9745479ce263016a99c4d6\"\u003e\u003ccode\u003efb4f204\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ca3ddd1149bd3b14273922a29da174804496a055\"\u003e\u003ccode\u003eca3ddd1\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/000e823a3ab7545b0c6064fde34effdcd02044ab\"\u003e\u003ccode\u003e000e823\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d45d8be3ffb6dfc6d0c64da6980140c91ff841fb\"\u003e\u003ccode\u003ed45d8be\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/54aca609ce58e73dfe1c681d93432fbe3a4621da\"\u003e\u003ccode\u003e54aca60\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/46bf4fa648af3a1fbf4603a37f210e9d9c618357\"\u003e\u003ccode\u003e46bf4fa\u003c/code\u003e\u003c/a\u003e Fix Pydantic release workflow (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13067\"\u003e#13067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1b359edab09c623464d23c6fd2503ae5ff276d43\"\u003e\u003ccode\u003e1b359ed\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13065\"\u003e#13065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b1bf19445d8ac144a7a0e82674d2d87eebab6c18\"\u003e\u003ccode\u003eb1bf194\u003c/code\u003e\u003c/a\u003e Fix model equality when using runtime \u003ccode\u003eextra\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13062\"\u003e#13062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.0...v2.13.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\u003c/a\u003e\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/prometheus/client_python/commit/2cd1738fb880fd0e6aa9a02ec48585128388a6cd\"\u003e\u003ccode\u003e2cd1738\u003c/code\u003e\u003c/a\u003e Release 0.25.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/daa1626eaf705318013b708954499b0a049088c8\"\u003e\u003ccode\u003edaa1626\u003c/code\u003e\u003c/a\u003e docs: add API reference for all metric types  (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1159\"\u003e#1159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/8673912276bdca7ddbca5d163eb11422b546bffb\"\u003e\u003ccode\u003e8673912\u003c/code\u003e\u003c/a\u003e Support MultiProcessCollector in RestrictedRegistry. (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1150\"\u003e#1150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/671f75c6f1f04838995fadd57cda21beee01838b\"\u003e\u003ccode\u003e671f75c\u003c/code\u003e\u003c/a\u003e Fix spaces in grouping key values for push_to_gateway (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1156\"\u003e#1156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/1cf53feae63b6ecb0bd76eee80582a0fba957e09\"\u003e\u003ccode\u003e1cf53fe\u003c/code\u003e\u003c/a\u003e Fix server shutdown documentation (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/a8541354519d04852d24688845f1d2d495eef59c\"\u003e\u003ccode\u003ea854135\u003c/code\u003e\u003c/a\u003e Migrate to Github Actions (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1153\"\u003e#1153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/f417f6ea8f058165a1934e368fed245e91aafc14\"\u003e\u003ccode\u003ef417f6e\u003c/code\u003e\u003c/a\u003e Release 0.24.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/6f0e967c1f7a408b75861d6833a8d303874be95d\"\u003e\u003ccode\u003e6f0e967\u003c/code\u003e\u003c/a\u003e Pass correct registry to MultiProcessCollector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/c5024d310fbfcba45a5e9db62e337a3a7930ea16\"\u003e\u003ccode\u003ec5024d3\u003c/code\u003e\u003c/a\u003e Release 0.24.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e1cdc203b1cf5f15c7b9a64d79fccc7907a62ca3\"\u003e\u003ccode\u003ee1cdc20\u003c/code\u003e\u003c/a\u003e Add Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1143\"\u003e#1143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/vllm-project/vllm/pull/41606","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vllm-project%2Fvllm/issues/41606","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41606/packages"}},{"old_version":"2.0.0","new_version":"2.1.0","update_type":"minor","path":null,"pr_created_at":"2026-04-22T21:28:45.000Z","version_change":"2.0.0 → 2.1.0","issue":{"uuid":"4311958501","node_id":"PR_kwDOJzO_rs7UxaGi","number":57,"state":"closed","title":"Bump iniconfig from 2.0.0 to 2.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-23T21:58:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-22T21:28:45.000Z","updated_at":"2026-04-23T21:58:53.000Z","time_to_close":88206,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.0.0 to 2.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/26\"\u003e#26\u003c/a\u003e - list individuals in license file by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/52\"\u003epytest-dev/iniconfig#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun tests in CI by \u003ca href=\"https://github.com/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epypa/gh-action-pypi-publish@release/v1\u003c/code\u003e @ GHA by \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12-3.13 and drop EOL 3.7 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/56\"\u003epytest-dev/iniconfig#56\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/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix artifact building - pin minimal version of hatch\u003c/li\u003e\n\u003cli\u003edrop eol python 3.8\u003c/li\u003e\n\u003cli\u003eadd python 3.12 and 3.13\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/iniconfig/commit/34793a6417e35e511d0c17ffdd8a02ade0f9568e\"\u003e\u003ccode\u003e34793a6\u003c/code\u003e\u003c/a\u003e pre-commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/136435d0a4345bb048dca98e7c2f4e938d74521b\"\u003e\u003ccode\u003e136435d\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/0bb99ad0f7a6b21d5eb24214a260132317a11e43\"\u003e\u003ccode\u003e0bb99ad\u003c/code\u003e\u003c/a\u003e fix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/62\"\u003e#62\u003c/a\u003e: require a minimal hatch version with correct metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/16793eaddac67de0b8d621ae4e42e05b927e8d67\"\u003e\u003ccode\u003e16793ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/56\"\u003e#56\u003c/a\u003e from hugovk/add-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3dc2b2d6bf03e4b7cc92949a8ef0983fdd7ee442\"\u003e\u003ccode\u003e3dc2b2d\u003c/code\u003e\u003c/a\u003e Add support for Python 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/2eb8abfd9d3843100d7f138efe5bcd989a885024\"\u003e\u003ccode\u003e2eb8abf\u003c/code\u003e\u003c/a\u003e Bump GitHub Actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8c4bb5bf57dde613c8cdcf0e02a09b2fff630907\"\u003e\u003ccode\u003e8c4bb5b\u003c/code\u003e\u003c/a\u003e Set python-version for pre-commit to remove CI warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58b22b2d672564ff1925df51f4a8e07486765ed2\"\u003e\u003ccode\u003e58b22b2\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/4a53042252a109bcdd64422058de91c5dffff763\"\u003e\u003ccode\u003e4a53042\u003c/code\u003e\u003c/a\u003e Add support for Python 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/9cae43103df70bac6fde7b9f35ad11a9f1be0cb4\"\u003e\u003ccode\u003e9cae431\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/54\"\u003e#54\u003c/a\u003e from webknjaz/patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.0.0\u0026new-version=2.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/k9securityio/cedar-py/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/k9securityio%2Fcedar-py/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-06T01:16:37.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4031591220","node_id":"PR_kwDOQvL0Ps7IXhyk","number":237,"state":"closed","title":"chore(deps): bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-09T22:44:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-06T01:16:37.000Z","updated_at":"2026-03-09T22:44:23.000Z","time_to_close":336458,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":null}],"path":null,"ecosystem":"pip"},"body":"\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/julesjewels-ai/jules-idea-automation/pull/237","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/julesjewels-ai%2Fjules-idea-automation/issues/237","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/237/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-05T19:25:36.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4030141104","node_id":"PR_kwDOOP_yhs7ITOfU","number":561,"state":"open","title":"chore(deps): bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-05T19:25:36.000Z","updated_at":"2026-03-05T21:42:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/italofelipe/auraxis-api/pull/561","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/italofelipe%2Fauraxis-api/issues/561","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/561/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-02T19:22:44.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4012883749","node_id":"PR_kwDOPrR8PM7HalTE","number":1521,"state":"open","title":"deps(python)(deps): bump the python-dependencies group across 1 directory with 150 updates","user":"dependabot[bot]","labels":["dependencies","python","priority: high","security"],"assignees":["GrayGhostDev"],"locked":false,"comments_count":11,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-02T19:22:44.000Z","updated_at":"2026-03-02T19:25:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps): bump","group_name":"python-dependencies","update_count":150,"packages":[{"name":"aiodns","old_version":"3.2.0","new_version":"3.6.1","repository_url":"https://github.com/saghul/aiodns"},{"name":"aiohttp-retry","old_version":"2.8.3","new_version":"2.9.1","repository_url":"https://github.com/inyutin/aiohttp_retry"},{"name":"anthropic","old_version":"0.75.0","new_version":"0.84.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"apispec","old_version":"6.7.1","new_version":"6.9.0","repository_url":"https://github.com/marshmallow-code/apispec"},{"name":"apispec-webframeworks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/marshmallow-code/apispec-webframeworks"},{"name":"asgiref","old_version":"3.9.2","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"authlib","old_version":"1.6.5","new_version":"1.6.9","repository_url":"https://github.com/authlib/authlib"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"basedpyright","old_version":"1.36.2","new_version":"1.38.2","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"cachetools","old_version":"5.5.0","new_version":"5.5.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.1","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.127.0","new_version":"0.135.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.20.1","new_version":"3.25.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"googleapis-common-protos","old_version":"1.59.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"hvac","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jiter","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"langchain","old_version":"1.2.2","new_version":"1.2.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.3.0","new_version":"1.3.4","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.2.6","new_version":"1.2.16","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.7","new_version":"1.1.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-text-splitters","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.0.5","new_version":"1.0.10","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.1","new_version":"0.3.9","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.6.1","new_version":"0.7.9","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"lxml","old_version":"6.0.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown","old_version":"3.7","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.4","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nltk","old_version":"3.9.2","new_version":"3.9.3","repository_url":"https://github.com/nltk/nltk"},{"name":"nodejs-wheel-binaries","old_version":"24.12.0","new_version":"24.14.0","repository_url":"https://github.com/njzjz/nodejs-wheel"},{"name":"opentelemetry-api","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.3","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"ormsgpack","old_version":"1.12.1","new_version":"1.12.2","repository_url":"https://github.com/ormsgpack/ormsgpack"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"phonenumbers","old_version":"8.13.50","new_version":"8.13.55","repository_url":"https://github.com/daviddrysdale/python-phonenumbers"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"playwright","old_version":"1.57.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"postgrest","old_version":"0.18.0","new_version":"0.19.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"prometheus-fastapi-instrumentator","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/trallnag/prometheus-fastapi-instrumentator"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.3.2","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psutil","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pusher","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pusher/pusher-http-python"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycares","old_version":"5.0.0","new_version":"5.0.1","repository_url":"https://github.com/saghul/pycares"},{"name":"pydantic","old_version":"2.9.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.23.4","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.1","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.1","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"realtime","old_version":"2.5.3","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.9.11","new_version":"2024.11.6","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.14","new_version":"0.2.15"},{"name":"ruff","old_version":"0.14.10","new_version":"0.15.4","repository_url":"https://github.com/astral-sh/ruff"},{"name":"safety-schemas","old_version":"0.0.16","new_version":"0.0.18","repository_url":"https://github.com/pyupio/safety_schemas"},{"name":"sendgrid","old_version":"6.11.0","new_version":"6.12.5","repository_url":"https://github.com/sendgrid/sendgrid-python"},{"name":"sentry-sdk","old_version":"2.19.2","new_version":"2.54.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.45","new_version":"2.0.48","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"storage3","old_version":"0.9.0","new_version":"0.12.2","repository_url":"https://github.com/supabase/supabase-py"},{"name":"stripe","old_version":"8.0.0","new_version":"8.11.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"supabase","old_version":"2.10.0","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supafunc","old_version":"0.7.0","new_version":"0.10.2","repository_url":"https://github.com/supabase/functions-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tomli","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.19.2","new_version":"0.24.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uuid-utils","old_version":"0.12.0","new_version":"0.14.1","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.41.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"yarl","old_version":"1.17.1","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"mkdocs-material","old_version":"9.7.1","new_version":"9.7.3","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"backrefs","old_version":"6.1","new_version":"6.2","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"pylint","old_version":"3.3.2","new_version":"3.3.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest-html","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/pytest-dev/pytest-html"},{"name":"faker","old_version":"33.1.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"responses","old_version":"0.25.8","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"ipython","old_version":"8.18.1","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 150 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiodns](https://github.com/saghul/aiodns) | `3.2.0` | `3.6.1` |\n| [aiohttp-retry](https://github.com/inyutin/aiohttp_retry) | `2.8.3` | `2.9.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.75.0` | `0.84.0` |\n| [apispec](https://github.com/marshmallow-code/apispec) | `6.7.1` | `6.9.0` |\n| [apispec-webframeworks](https://github.com/marshmallow-code/apispec-webframeworks) | `1.1.0` | `1.2.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.9.2` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.5` | `1.6.9` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.36.2` | `1.38.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `5.5.2` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.1` | `7.13.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.127.0` | `0.135.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.1` | `3.25.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.61.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.59.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.0` | `3.3.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.78.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [hvac](https://github.com/hvac/hvac) | `2.1.0` | `2.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.13.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.2.2` | `1.2.10` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.3.0` | `1.3.4` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.2.6` | `1.2.16` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.7` | `1.1.10` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.0` | `1.1.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.10` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.8` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.1` | `0.3.9` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.6.1` | `0.7.9` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.0` | `6.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.4` | `6.7.1` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.2` | `3.9.3` |\n| [nodejs-wheel-binaries](https://github.com/njzjz/nodejs-wheel) | `24.12.0` | `24.14.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.42b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.3` | `3.11.7` |\n| [ormsgpack](https://github.com/ormsgpack/ormsgpack) | `1.12.1` | `1.12.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) | `8.13.50` | `8.13.55` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.2` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.57.0` | `1.58.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `0.18.0` | `0.19.3` |\n| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `7.0.0` | `7.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.4.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `6.1.1` |\n| [pusher](https://github.com/pusher/pusher-http-python) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycares](https://github.com/saghul/pycares) | `5.0.0` | `5.0.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.23.4` | `2.42.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.11.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.0` | `3.3.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.2` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `3.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.22` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.5.3` | `2.28.0` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.9.11` | `2024.11.6` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.14` | `0.2.15` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.10` | `0.15.4` |\n| [safety-schemas](https://github.com/pyupio/safety_schemas) | `0.0.16` | `0.0.18` |\n| [sendgrid](https://github.com/sendgrid/sendgrid-python) | `6.11.0` | `6.12.5` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.19.2` | `2.54.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.45` | `2.0.48` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [storage3](https://github.com/supabase/supabase-py) | `0.9.0` | `0.12.2` |\n| [stripe](https://github.com/stripe/stripe-python) | `8.0.0` | `8.11.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.10.0` | `2.28.0` |\n| [supafunc](https://github.com/supabase/functions-py) | `0.7.0` | `0.10.2` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.3.0` | `2.4.0` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.3` | `0.14.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [typer](https://github.com/fastapi/typer) | `0.19.2` | `0.24.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.15.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.14.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.41.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.6.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.4` | `3.1.6` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.23.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.1` | `9.7.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.0` | `1.5.1` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.1` | `6.2` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.2` | `3.3.9` |\n| [pytest-html](https://github.com/pytest-dev/pytest-html) | `4.1.1` | `4.2.0` |\n| [faker](https://github.com/joke2k/faker) | `33.1.0` | `33.3.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.8` | `0.26.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `8.38.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n\n\nUpdates `aiodns` from 3.2.0 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiodns/blob/master/ChangeLog\"\u003eaiodns's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.6.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePin pycares to \u0026lt; 5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.6.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ePrevents resolver from being garbage collected while queries are in progress\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSocket callback optimizations (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/172\"\u003e#172\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved performance for socket state handling\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed RTD links (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.9.0 to 4.11.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/186\"\u003e#186\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 1.0.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/181\"\u003e#181\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.2.1 to 7.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/193\"\u003e#193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.4.0 to 8.4.2 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/171\"\u003e#171\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/190\"\u003e#190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.16.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/170\"\u003e#170\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/179\"\u003e#179\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/195\"\u003e#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/197\"\u003e#197\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped uvloop from 0.21.0 to 0.22.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/202\"\u003e#202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped winloop from 0.1.8 to 0.3.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/182\"\u003e#182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/183\"\u003e#183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/184\"\u003e#184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/187\"\u003e#187\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/200\"\u003e#200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/201\"\u003e#201\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/checkout from 4 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/188\"\u003e#188\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded explicit close method (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/166\"\u003e#166\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eAllows proper cleanup of resources on demand\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed return type signature for CNAME and SOA records (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/162\"\u003e#162\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eCorrected type annotations for better type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImproved Windows event loop documentation (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/163\"\u003e#163\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eProvided more accurate information on supported event loops on Windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded pre-commit configuration with ruff (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/152\"\u003e#152\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved code quality and consistency\u003c/li\u003e\n\u003cli\u003eReformatted code and normalized end-of-line characters (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/155\"\u003e#155\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.8.0 to 4.9.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 0.26.0 to 1.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.1.1 to 6.2.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.3.5 to 8.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.15.0 to 1.16.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded fallback to \u003ccode\u003esock_state_cb\u003c/code\u003e if \u003ccode\u003eevent_thread\u003c/code\u003e creation fails (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/151\"\u003e#151\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved reliability on systems with exhausted inotify watches\u003c/li\u003e\n\u003cli\u003eImplemented transparent fallback mechanism to ensure DNS resolution continues to work\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImplemented strict typing (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/138\"\u003e#138\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/aio-libs/aiodns/commit/1067970f92bc386b8b04469e83287e140e39c562\"\u003e\u003ccode\u003e1067970\u003c/code\u003e\u003c/a\u003e Release 3.6.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/a85b558b71cf9464a4c876f57490224ee98e3829\"\u003e\u003ccode\u003ea85b558\u003c/code\u003e\u003c/a\u003e build: prevent incompatible pycares versions (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/6d63e75848ec975c51667c6c3fd115f27199716f\"\u003e\u003ccode\u003e6d63e75\u003c/code\u003e\u003c/a\u003e Bump winloop from 0.3.1 to 0.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/be007e21337ca638e4ee987d8a3c91ca31fd8211\"\u003e\u003ccode\u003ebe007e2\u003c/code\u003e\u003c/a\u003e Release 3.6.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/4cb8ab83bb21b7bbf152b9ca71baf2c74427fc9d\"\u003e\u003ccode\u003e4cb8ab8\u003c/code\u003e\u003c/a\u003e Fix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/e088cf48f6a30006e0545f8a4794210d3d99779f\"\u003e\u003ccode\u003ee088cf4\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/23dc7727637bedb972d91614ee73922ff84d4d1a\"\u003e\u003ccode\u003e23dc772\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/3a1bddf5dec8e79af7690d6caffec84746e096e4\"\u003e\u003ccode\u003e3a1bddf\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/b57721e1267c614f329eb36eb700ca2f1468446c\"\u003e\u003ccode\u003eb57721e\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/ac6803818ad533749bedc9e11b691da0fe4bbe85\"\u003e\u003ccode\u003eac68038\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/saghul/aiodns/compare/v3.2.0...v3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp-retry` from 2.8.3 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/inyutin/aiohttp_retry/releases\"\u003eaiohttp-retry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests init file by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/106\"\u003einyutin/aiohttp_retry#106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the client sometimes would not retry by \u003ca href=\"https://github.com/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\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/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRetry based on HTTP methods by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/103\"\u003einyutin/aiohttp_retry#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: _RequestContext._do_request() by \u003ca href=\"https://github.com/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ruff by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/99\"\u003einyutin/aiohttp_retry#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code-coverage by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/100\"\u003einyutin/aiohttp_retry#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python packages up to 3.13 by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/101\"\u003einyutin/aiohttp_retry#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo detected by codespell + add codespell workflow to avoid typos sneaking in by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove documentation a little bit by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/102\"\u003einyutin/aiohttp_retry#102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ci dependencies by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/104\"\u003einyutin/aiohttp_retry#104\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/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.0\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.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/inyutin/aiohttp_retry/commit/39b23915023dde0e0298b822de3d23960a5024e6\"\u003e\u003ccode\u003e39b2391\u003c/code\u003e\u003c/a\u003e Fix the client sometimes would not retry (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/4b406631f39963d7cda97086e89da6c740c56a6d\"\u003e\u003ccode\u003e4b40663\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/106\"\u003e#106\u003c/a\u003e from inyutin/tests-init-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5007c9a469e46198cab7f7a1f944166ae82d045f\"\u003e\u003ccode\u003e5007c9a\u003c/code\u003e\u003c/a\u003e Add tests init file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/75dbda9057f5cc7fe2d44ce6b60018381b84a08b\"\u003e\u003ccode\u003e75dbda9\u003c/code\u003e\u003c/a\u003e Add workflow_dispatch to publish package CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/f402cf6e0d59992945ae7833b903a8aef5a114b3\"\u003e\u003ccode\u003ef402cf6\u003c/code\u003e\u003c/a\u003e Package version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/1dca2d92da43cc011175f4cbef2c64d7f166d111\"\u003e\u003ccode\u003e1dca2d9\u003c/code\u003e\u003c/a\u003e publish CI update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5ea8c8eab3706617011b5ba7ff0a86cec5c4182a\"\u003e\u003ccode\u003e5ea8c8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/104\"\u003e#104\u003c/a\u003e from inyutin/dev-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/87c03ed64383710d05350ec0ce2110950fb327ab\"\u003e\u003ccode\u003e87c03ed\u003c/code\u003e\u003c/a\u003e Encode pytest asyncio setting in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/7af8295a7c99b1824c96f1a07f6cef1e1e64b4d7\"\u003e\u003ccode\u003e7af8295\u003c/code\u003e\u003c/a\u003e Update ci dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/723961d3c2e841da8232b2da92e354c70624310c\"\u003e\u003ccode\u003e723961d\u003c/code\u003e\u003c/a\u003e Retry based on HTTP methods (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.75.0 to 0.84.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.84.0\u003c/h2\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.83.0\u003c/h2\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.82.0\u003c/h2\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.84.0 (2026-02-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0\"\u003ev0.83.0...v0.84.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e change array_format to brackets (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/925d2ad6b76ad7c15de07b9b2768738775f71631\"\u003e925d2ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove publishing section from cli target (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7bc7cebc68db70f08fce23e7e0b24acbc9ff37a7\"\u003e7bc7ceb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ehelpers:\u003c/strong\u003e add conversion helpers for MCP tools, prompts, and resources (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1383\"\u003e#1383\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9489751386d1540bf80eff63ab47ca2b3cc18fa1\"\u003e9489751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing raw jsonl results method (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1009d4aca8be42973ca39104bc9bd8087f51ff9c\"\u003e1009d4a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e add request options to SSE classes (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4f4bc8e6241c2ccee8dfe4cdbc522081e3e30f08\"\u003e4f4bc8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f7056e09411a45798a678be5766a7b7d6dcbc7a9\"\u003ef7056e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/143efccfcc20c12f920b6ba242eff7c0feeea7c4\"\u003e143efcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4a4dc9f6b36ab0224095790f4311c7f60c9845f7\"\u003e4a4dc9f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update jsonl tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a8e6a6e5544b9f1626e3fb5faa31a1accfc81441\"\u003ea8e6a6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erebrand to Claude SDK and streamline README (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6b544058ab19e55e1c76a4ba9816205d1eedc630\"\u003e6b54405\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\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/anthropics/anthropic-sdk-python/commit/49d639a671cb0ac30c767e8e1e68fdd5925205d5\"\u003e\u003ccode\u003e49d639a\u003c/code\u003e\u003c/a\u003e release: 0.84.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4d73b2159f7f3e88113a904f785de58ec4157045\"\u003e\u003ccode\u003e4d73b21\u003c/code\u003e\u003c/a\u003e feat(helpers): add conversion helpers for MCP tools, prompts, and resources (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0e4092173fc52d773675f8e3a4ced6a5e2f67c9f\"\u003e\u003ccode\u003e0e40921\u003c/code\u003e\u003c/a\u003e docs: rebrand to Claude SDK and streamline README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c3017a227c67377b862644feb463c0d8a1e9ddc9\"\u003e\u003ccode\u003ec3017a2\u003c/code\u003e\u003c/a\u003e chore(internal): simplify http snapshots (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1092\"\u003e#1092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/470fda9c14714117342c0491d6e436d158bbb4ab\"\u003e\u003ccode\u003e470fda9\u003c/code\u003e\u003c/a\u003e chore(internal): make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient to env\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c30c72d710dea90437a73713296e76c12518c359\"\u003e\u003ccode\u003ec30c72d\u003c/code\u003e\u003c/a\u003e chore: add missing raw jsonl results method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9d9a5a1aab3aa67c665c39bbeed3fec298fc2e6a\"\u003e\u003ccode\u003e9d9a5a1\u003c/code\u003e\u003c/a\u003e chore(internal):  make \u003ccode\u003etest_proxy_environment_variables\u003c/code\u003e more resilient\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c28d2d50a5f5197839c36fb4741bee8cd1e976c1\"\u003e\u003ccode\u003ec28d2d5\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/bb13f1ea6be3941342115fdb125e3fe225252071\"\u003e\u003ccode\u003ebb13f1e\u003c/code\u003e\u003c/a\u003e chore(internal): add request options to SSE classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ab0ccb990d098ef56c0367abcb0c745d7a58a99e\"\u003e\u003ccode\u003eab0ccb9\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.75.0...v0.84.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec` from 6.7.1 to 6.9.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec/blob/dev/CHANGELOG.rst\"\u003eapispec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.9.0 (2025-11-30)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eexamples\u003c/code\u003e property from field metadata (:pr:\u003ccode\u003e999\u003c/code\u003e).\nThanks :user:\u003ccode\u003eFlix6x\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 (:pr:\u003ccode\u003e998\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 (:pr:\u003ccode\u003e994\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.4 (2025-09-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eTimeDelta\u003c/code\u003e field type according to \u003ccode\u003eserialization_type\u003c/code\u003e (:pr:\u003ccode\u003e990\u003c/code\u003e).\nThanks :user:\u003ccode\u003eLewisHaley\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.3 (2025-09-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e if\n\u003ccode\u003eunknown\u003c/code\u003e is not set (:pr:\u003ccode\u003e988\u003c/code\u003e).\nThanks :user:\u003ccode\u003emwgamble\u003c/code\u003e for reporting.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e according to \u003ccode\u003eunknown\u003c/code\u003e\nvalue passed at schema instantiation, not only as \u003ccode\u003eMeta\u003c/code\u003e attribute\n(:pr:\u003ccode\u003e988\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.2 (2025-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e doesn't override \u003ccode\u003eadditionalProperties\u003c/code\u003e explicitly\npassed to \u003ccode\u003efields.Dict\u003c/code\u003e (:pr:\u003ccode\u003e976\u003c/code\u003e).\nThanks :user:\u003ccode\u003e0x0400\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerf improvement to \u003ccode\u003efilter_excluded_fields\u003c/code\u003e (:issue:\u003ccode\u003e972\u003c/code\u003e).\nThanks :user:\u003ccode\u003eallrob23\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.1 (2025-01-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\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/marshmallow-code/apispec/commit/58265d009f7cf027f22356a3fe9ea80813bcb36e\"\u003e\u003ccode\u003e58265d0\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/e25f2d4ab50855cfb9977dbbd167d1f67eae4f35\"\u003e\u003ccode\u003ee25f2d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/999\"\u003e#999\u003c/a\u003e from SeitaBV/feat/support-examples-property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/eab75c737746e46c9002f1d59b1fcd3c46f5855c\"\u003e\u003ccode\u003eeab75c7\u003c/code\u003e\u003c/a\u003e feat: add test of metadata examples field\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/3a620c64b7506374cf8094deb0d786ee221e95a9\"\u003e\u003ccode\u003e3a620c6\u003c/code\u003e\u003c/a\u003e chore: AUTHORS.rst entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/0349ca265eda89f8e633aa3b09b0a8348afb6d11\"\u003e\u003ccode\u003e0349ca2\u003c/code\u003e\u003c/a\u003e docs: thank myself (a bit presumptuous, don't I think)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/8f74aa5bed1d3e65d6917674d2475701df275a53\"\u003e\u003ccode\u003e8f74aa5\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/32f4f34a229674d274e17b50b57ffa4e9610df4c\"\u003e\u003ccode\u003e32f4f34\u003c/code\u003e\u003c/a\u003e docs: add changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/867ae3b93254e822af1a18e83ebb6761aa07511b\"\u003e\u003ccode\u003e867ae3b\u003c/code\u003e\u003c/a\u003e feat: 'examples' is a supported property in OpenAPI 3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/40210699852a926c13a8d351e280c4a41070fc27\"\u003e\u003ccode\u003e4021069\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/c10c481ee4300056e07c134272d13c44a3283f90\"\u003e\u003ccode\u003ec10c481\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/998\"\u003e#998\u003c/a\u003e from marshmallow-code/py314\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec/compare/6.7.1...6.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec-webframeworks` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/blob/main/CHANGELOG.rst\"\u003eapispec-webframeworks's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2024-09-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTornadoPlugin: Ensure consistent ordering for HTTP path keys\n(:pr:\u003ccode\u003e159\u003c/code\u003e). Thanks :user:\u003ccode\u003ebhperry\u003c/code\u003e for the PR.\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/marshmallow-code/apispec-webframeworks/commit/ebf43f149e685e3fe2abca2a1224b87e6c7415c1\"\u003e\u003ccode\u003eebf43f1\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/e26e46369626b225eb2776075e1ad116f18dc6b5\"\u003e\u003ccode\u003ee26e463\u003c/code\u003e\u003c/a\u003e Consistent ordering for HTTP path keys (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/abcb590d894572ab53865ad8f7d355f62c94cbf7\"\u003e\u003ccode\u003eabcb590\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/377fe6bd9aa8fc70d24dd65ef1d55016d8dd4fea\"\u003e\u003ccode\u003e377fe6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/bda9880a0d91692162ca87dcb30f35c404d9afbd\"\u003e\u003ccode\u003ebda9880\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/b5940fa3aa996eecce81dd536689aca3844c7580\"\u003e\u003ccode\u003eb5940fa\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/6c7f164bc58a9c647ecda3dd801bc75dab9f21d1\"\u003e\u003ccode\u003e6c7f164\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/154\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/7326a3f262caf41c3f64648cc231fdb9f6ac9d48\"\u003e\u003ccode\u003e7326a3f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/9da38826c861ea88f60f173e6f9bb212b522a22c\"\u003e\u003ccode\u003e9da3882\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/1db8ed966be0e710a14e6518a86f6ce72981504f\"\u003e\u003ccode\u003e1db8ed9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/compare/1.1.0...1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.9.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\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/django/asgiref/commit/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/asgiref/compare/3.9.2...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `authlib` from 1.6.5 to 1.6.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.9\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.8...v1.6.9\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.8...v1.6.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eChanges in \u003ccode\u003ejose\u003c/code\u003e module\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNot using header's \u003ccode\u003ejwk\u003c/code\u003e automatically\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eES256K\u003c/code\u003e into default jwt algorithms\u003c/li\u003e\n\u003cli\u003eRemove deprecated algorithm from default registry\u003c/li\u003e\n\u003cli\u003eGenerate random \u003ccode\u003ecek\u003c/code\u003e when \u003ccode\u003ecek\u003c/code\u003e length doesn't match\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.8\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eEdDSA\u003c/code\u003e to default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSet supported algorithms for the default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/p\u003e\n\u003ch2\u003ev1.6.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(ClientAuth): fix incorrect signature when Content-Type is x-www-form-urlencoded by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable by \u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter. by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/844\"\u003eauthlib/authlib#844\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/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\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/authlib/authlib/blob/main/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e.. meta::\n:description: The full list of changes between each Authlib release.\u003c/p\u003e\n\u003cp\u003eHere you can see the full list of changes between each Authlib release.\u003c/p\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eUnreleased\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eOpenID Connect RP-Initiated Logout 1.0 \u0026lt;https://openid.net/specs/openid-connect-rpinitiated-1_0.html\u0026gt;\u003c/code\u003e_.\nSee :ref:\u003ccode\u003especs/rpinitiated\u003c/code\u003e for details. :issue:\u003ccode\u003e500\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePer RFC 6749 Section 3.3, the \u003ccode\u003escope\u003c/code\u003e parameter is now optional at both\nauthorization and token endpoints. \u003ccode\u003eclient.get_allowed_scope()\u003c/code\u003e is called\nto determine the default scope when omitted. :issue:\u003ccode\u003e845\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9, start support Python 3.14. :pr:\u003ccode\u003e850\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eAuthorizationServerMetadata.validate()\u003c/code\u003e to compose with RFC extension classes.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at=0\u003c/code\u003e being incorrectly treated as \u003ccode\u003eNone\u003c/code\u003e. :issue:\u003ccode\u003e530\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eResourceProtector\u003c/code\u003e decorator to be used without parentheses. :issue:\u003ccode\u003e604\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImplement RFC9700 PKCE downgrade countermeasure.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUpgrade Guide: :ref:\u003ccode\u003ejoserfc_upgrade\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 1.6.6\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Dec 12, 2025\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter, :pr:\u003ccode\u003e844\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix incorrect signature when \u003ccode\u003eContent-Type\u003c/code\u003e is x-www-form-urlencoded for OAuth 1.0 Client, :pr:\u003ccode\u003e778\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eexpires_in\u003c/code\u003e in \u003ccode\u003eOAuth2Token\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable, :pr:\u003ccode\u003e842\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAlways track \u003ccode\u003estate\u003c/code\u003e in session for OAuth client integrations.\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/authlib/authlib/commit/9266eaa2227ad7e21dc731b2a4a01909aabd934b\"\u003e\u003ccode\u003e9266eaa\u003c/code\u003e\u003c/a\u003e chore: release 1.6.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b9bb2b25bf8b7e01512d847a95c1749646eaa72b\"\u003e\u003ccode\u003eb9bb2b2\u003c/code\u003e\u003c/a\u003e fix(oidc): fail close at validating c_hash and at_hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/1b0a1d988842bff7347c4ec0a70e45c3ba55504e\"\u003e\u003ccode\u003e1b0a1d9\u003c/code\u003e\u003c/a\u003e fix(jose): generate random cek when cek length doesn't match\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5be3c518794b7322375bae2bf1871713d9b5c2fb\"\u003e\u003ccode\u003e5be3c51\u003c/code\u003e\u003c/a\u003e fix(jose): add ES256K into default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/48b345f29f6c459f11c6a40162b6c0b742ef2e22\"\u003e\u003ccode\u003e48b345f\u003c/code\u003e\u003c/a\u003e fix(jose): remove deprecated algorithm from default registry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a5d4b2d4c9e46bfa11c82f85fdc2bcc0b50ae681\"\u003e\u003ccode\u003ea5d4b2d\u003c/code\u003e\u003c/a\u003e fix(jose): do not use header's jwk automatically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a769f343ae8d43236448e3e74445980861812e82\"\u003e\u003ccode\u003ea769f34\u003c/code\u003e\u003c/a\u003e chore: release 1.6.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/84f3fa2965a189c16528329e8cfe41d094008588\"\u003e\u003ccode\u003e84f3fa2\u003c/code\u003e\u003c/a\u003e fix: add EdDSA to default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/38e872a3f5b97d2658507acc8762a4e18adaa50e\"\u003e\u003ccode\u003e38e872a\u003c/code\u003e\u003c/a\u003e chore: release 1.6.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b87c32ed07b8ae7f805873e1c9cafd1016761df7\"\u003e\u003ccode\u003eb87c32e\u003c/code\u003e\u003c/a\u003e fix: remove \u0026quot;none\u0026quot; algorithm from default jwt instance\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.36.2 to 1.38.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/264b2472bf3c09522851bf7c7fa7d1c88bea044f\"\u003e\u003ccode\u003e264b247\u003c/code\u003e\u003c/a\u003e 1.38.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/e57065d9ef83e65f5f0f63f097ee2798d370b021\"\u003e\u003ccode\u003ee57065d\u003c/code\u003e\u003c/a\u003e Extract some duplicated test helpers and improve the \u003cstrong\u003ecall\u003c/strong\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/...\n\n_Description has been truncated_","html_url":"https://github.com/GrayGhostDev/ToolboxAI-Solutions/pull/1521","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrayGhostDev%2FToolboxAI-Solutions/issues/1521","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1521/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-01T14:07:17.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"4007288546","node_id":"PR_kwDOFhigTs7HIY01","number":494,"state":"closed","title":"Bump the core-scripts group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-10T18:28:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-01T14:07:17.000Z","updated_at":"2026-03-10T18:28:15.000Z","time_to_close":793256,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"core-scripts","update_count":21,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"certifi","old_version":"2025.8.3","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"chardet","old_version":"5.2.0","new_version":"6.0.0.post1","repository_url":"https://github.com/chardet/chardet"},{"name":"environs","old_version":"14.3.0","new_version":"14.6.0","repository_url":"https://github.com/sloria/environs"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parse","old_version":"1.20.2","new_version":"1.21.1","repository_url":"https://github.com/r1chardj0n3s/parse"},{"name":"parse-type","old_version":"0.6.4","new_version":"0.6.6","repository_url":"https://github.com/jenisys/parse_type"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pygithub","old_version":"2.7.0","new_version":"2.8.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"responses","old_version":"0.25.7","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"behave","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/behave/behave"}],"path":null,"ecosystem":"pip"},"body":"Bumps the core-scripts group with 21 updates in the /scripts directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.8.3` | `2026.2.25` |\n| [chardet](https://github.com/chardet/chardet) | `5.2.0` | `6.0.0.post1` |\n| [environs](https://github.com/sloria/environs) | `14.3.0` | `14.6.0` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parse](https://github.com/r1chardj0n3s/parse) | `1.20.2` | `1.21.1` |\n| [parse-type](https://github.com/jenisys/parse_type) | `0.6.4` | `0.6.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.7.0` | `2.8.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.26.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [behave](https://github.com/behave/behave) | `1.3.0` | `1.3.3` |\n\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.8.3 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/2025.08.03...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.2.0 to 6.0.0.post1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.0.post1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed version number in chardet/version.py still being set to \u003ccode\u003e6.0.0dev0\u003c/code\u003e. Otherwise identical to \u003ca href=\"https://github.com/chardet/chardet/releases/6.0.0\"\u003e6.0.0\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eUnified single-byte charset detection\u003c/strong\u003e: Instead of only having trained language models for a handful of languages (Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, Turkish) and relying on special-case \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e heuristics for Western encodings, chardet now treats all single-byte charsets the same way: every encoding gets proper language-specific bigram models trained on CulturaX corpus data. This means chardet can now accurately detect both the encoding \u003cem\u003eand\u003c/em\u003e the language for all supported single-byte encodings.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e38 new languages\u003c/strong\u003e: Arabic, Belarusian, Breton, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Farsi, Finnish, French, German, Icelandic, Indonesian, Irish, Italian, Kazakh, Latvian, Lithuanian, Macedonian, Malay, Maltese, Norwegian, Polish, Portuguese, Romanian, Scottish Gaelic, Serbian, Slovak, Slovene, Spanish, Swedish, Tajik, Ukrainian, Vietnamese, and Welsh. Existing models for Bulgarian, Greek, Hebrew, Hungarian, Russian, Thai, and Turkish were also retrained with the new pipeline.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eEncodingEra\u003c/code\u003e filtering\u003c/strong\u003e: New \u003ccode\u003eencoding_era\u003c/code\u003e parameter to \u003ccode\u003edetect\u003c/code\u003e allows filtering by an \u003ccode\u003eEncodingEra\u003c/code\u003e flag enum (\u003ccode\u003eMODERN_WEB\u003c/code\u003e, \u003ccode\u003eLEGACY_ISO\u003c/code\u003e, \u003ccode\u003eLEGACY_MAC\u003c/code\u003e, \u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e, \u003ccode\u003eDOS\u003c/code\u003e, \u003ccode\u003eMAINFRAME\u003c/code\u003e, \u003ccode\u003eALL\u003c/code\u003e) allows callers to restrict detection to encodings from a specific era. \u003ccode\u003edetect()\u003c/code\u003e and \u003ccode\u003edetect_all()\u003c/code\u003e default to \u003ccode\u003eMODERN_WEB\u003c/code\u003e. The new \u003ccode\u003eMODERN_WEB\u003c/code\u003e default should drastically improve accuracy for users who are not working with legacy data. The tiers are:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMODERN_WEB\u003c/code\u003e: UTF-8/16/32, Windows-125x, CP874, CJK multi-byte (widely used on the web)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_ISO\u003c/code\u003e: ISO-8859-x, KOI8-R/U (legacy but well-known standards)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_MAC\u003c/code\u003e: Mac-specific encodings (MacRoman, MacCyrillic, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLEGACY_REGIONAL\u003c/code\u003e: Uncommon regional/national encodings (KOI8-T, KZ1048, CP1006, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDOS\u003c/code\u003e: DOS/OEM code pages (CP437, CP850, CP866, etc.)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMAINFRAME\u003c/code\u003e: EBCDIC variants (CP037, CP500, etc.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--encoding-era\u003c/code\u003e CLI flag\u003c/strong\u003e: The \u003ccode\u003echardetect\u003c/code\u003e CLI now accepts \u003ccode\u003e-e\u003c/code\u003e/\u003ccode\u003e--encoding-era\u003c/code\u003e to control which encoding eras are considered during detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003echunk_size\u003c/code\u003e parameters\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e now accept \u003ccode\u003emax_bytes\u003c/code\u003e (default 200KB) and \u003ccode\u003echunk_size\u003c/code\u003e (default 64KB) parameters for controlling how much data is examined. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/314\"\u003e#314\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncoding era preference tie-breaking\u003c/strong\u003e: When multiple encodings have very close confidence scores, the detector now prefers more modern/Unicode encodings over legacy ones.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCharset metadata registry\u003c/strong\u003e: New \u003ccode\u003echardet.metadata.charsets\u003c/code\u003e module provides structured metadata about all supported encodings, including their era classification and language filter.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eshould_rename_legacy\u003c/code\u003e now defaults intelligently\u003c/strong\u003e: When set to \u003ccode\u003eNone\u003c/code\u003e (the new default), legacy renaming is automatically enabled when \u003ccode\u003eencoding_era\u003c/code\u003e is \u003ccode\u003eMODERN_WEB\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDirect GB18030 support\u003c/strong\u003e: Replaced the redundant GB2312 prober with a proper GB18030 prober.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEBCDIC detection\u003c/strong\u003e: Added CP037 and CP500 EBCDIC model registrations for mainframe encoding detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBinary file detection\u003c/strong\u003e: Added basic binary file detection to abort analysis earlier on non-text files.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.12, 3.13, and 3.14 support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e; \u003ca href=\"https://redirect.github.com/chardet/chardet/issues/311\"\u003e#311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitHub Codespace support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/312\"\u003e#312\u003c/a\u003e, \u003ca href=\"https://github.com/oxygen-dioxide\"\u003e\u003ccode\u003e@​oxygen-dioxide\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFix CP949 state machine\u003c/strong\u003e: Corrected the state machine for Korean CP949 encoding detection. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/268\"\u003e#268\u003c/a\u003e, \u003ca href=\"https://github.com/nenw\"\u003e\u003ccode\u003e@​nenw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix SJIS distribution analysis\u003c/strong\u003e: Fixed \u003ccode\u003eSJISDistributionAnalysis\u003c/code\u003e discarding valid second-byte range \u0026gt;= 0x80. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/315\"\u003e#315\u003c/a\u003e, \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-16/32 detection for non-ASCII-heavy text\u003c/strong\u003e: Improved detection of UTF-16/32 encoded CJK and other non-ASCII text by adding a \u003ccode\u003eMIN_RATIO\u003c/code\u003e threshold alongside the existing \u003ccode\u003eEXPECTED_RATIO\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003eget_charset\u003c/code\u003e crash\u003c/strong\u003e: Resolved a crash when looking up unknown charset names.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix GB18030 \u003ccode\u003echar_len_table\u003c/code\u003e\u003c/strong\u003e: Corrected the character length table for GB18030 multi-byte sequences.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix UTF-8 state machine\u003c/strong\u003e: Updated to be more spec-compliant.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix \u003ccode\u003edetect_all()\u003c/code\u003e returning inactive probers\u003c/strong\u003e: Results from probers that determined \u0026quot;definitely not this encoding\u0026quot; are now excluded.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFix early cutoff bug\u003c/strong\u003e: Resolved an issue where detection could terminate prematurely.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDefault UTF-8 fallback\u003c/strong\u003e: If UTF-8 has not been ruled out and nothing else is above the minimum threshold, UTF-8 is now returned as the default.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDropped Python 3.7, 3.8, and 3.9 support\u003c/strong\u003e: Now requires Python 3.10+. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/283\"\u003e#283\u003c/a\u003e, \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved \u003ccode\u003eLatin1Prober\u003c/code\u003e and \u003ccode\u003eMacRomanProber\u003c/code\u003e\u003c/strong\u003e: These special-case probers have been replaced by the unified model-based approach described above. Latin-1, MacRoman, and all other single-byte encodings are now detected by \u003ccode\u003eSingleByteCharSetProber\u003c/code\u003e with trained language models, giving better accuracy and language identification.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved EUC-TW support\u003c/strong\u003e: EUC-TW encoding detection has been removed as it is extremely rare in practice.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eLanguageFilter.NONE\u003c/code\u003e removed\u003c/strong\u003e: Use specific language filters or \u003ccode\u003eLanguageFilter.ALL\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnum types changed\u003c/strong\u003e: \u003ccode\u003eInputState\u003c/code\u003e, \u003ccode\u003eProbingState\u003c/code\u003e, \u003ccode\u003eMachineState\u003c/code\u003e, \u003ccode\u003eSequenceLikelihood\u003c/code\u003e, and \u003ccode\u003eCharacterCategory\u003c/code\u003e are now \u003ccode\u003eIntEnum\u003c/code\u003e (previously plain classes or \u003ccode\u003eEnum\u003c/code\u003e). \u003ccode\u003eLanguageFilter\u003c/code\u003e values changed from hardcoded hex to \u003ccode\u003eauto()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003edetect()\u003c/code\u003e default behavior change\u003c/strong\u003e: \u003ccode\u003edetect()\u003c/code\u003e now defaults to \u003ccode\u003eencoding_era=EncodingEra.MODERN_WEB\u003c/code\u003e and \u003ccode\u003eshould_rename_legacy=None\u003c/code\u003e (auto-enabled for \u003ccode\u003eMODERN_WEB\u003c/code\u003e), whereas previously it defaulted to considering all encodings with no legacy renaming.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSwitched from Poetry/setuptools to uv + hatchling\u003c/strong\u003e: Build system modernized with \u003ccode\u003ehatch-vcs\u003c/code\u003e for version management.\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/chardet/chardet/commit/2fa72d84fdb9cb926eb1e7e40230a33b1dd81bb8\"\u003e\u003ccode\u003e2fa72d8\u003c/code\u003e\u003c/a\u003e Update version to 6.0.0.post1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/8a4636b1d4ef21d11cc8190f6ff271670b9d20ee\"\u003e\u003ccode\u003e8a4636b\u003c/code\u003e\u003c/a\u003e docs: modernize usage examples and reorganize table of contents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/20da71e7087159944e1ccfd586544a581744103a\"\u003e\u003ccode\u003e20da71e\u003c/code\u003e\u003c/a\u003e docs: fix copyright start year and remove first-person reference\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/b45ae91d9892c834a692e42d527670c6018d8301\"\u003e\u003ccode\u003eb45ae91\u003c/code\u003e\u003c/a\u003e docs: update copyright to 2015-2026 chardet contributors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/3f9910dbebfc2b268edba21eaf2175532c761c52\"\u003e\u003ccode\u003e3f9910d\u003c/code\u003e\u003c/a\u003e Add .readthedocs.yaml to fix RTD builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/7ef7cd00f27e18c5a846c75b5b4aecd0ddd36186\"\u003e\u003ccode\u003e7ef7cd0\u003c/code\u003e\u003c/a\u003e Fix pyright type errors in chardetect.py and test.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/4025dfa2487e9a72d940ccf31ad933171aa178e5\"\u003e\u003ccode\u003e4025dfa\u003c/code\u003e\u003c/a\u003e Update documentation for 6.0.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/117082980035dadbe723b798cba267c537374747\"\u003e\u003ccode\u003e1170829\u003c/code\u003e\u003c/a\u003e Add LEGACY_REGIONAL encoding era and reclassify misplaced encodings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/19379ac0110df41a76835a89756ae23abc528bd3\"\u003e\u003ccode\u003e19379ac\u003c/code\u003e\u003c/a\u003e Add --encoding-era CLI flag and improve heuristic selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/61308e2525dc43441ba07c6559d78bb9429ec31a\"\u003e\u003ccode\u003e61308e2\u003c/code\u003e\u003c/a\u003e Pre-release fixes: bump to 6.0.0, fix get_charset crash, cleanup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chardet/chardet/compare/5.2.0...6.0.0.post1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `environs` from 14.3.0 to 14.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sloria/environs/blob/main/CHANGELOG.md\"\u003eenvirons's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.6.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix variable expansion with other characters (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/359\"\u003e#359\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/flymanzhao\"\u003eflymanzhao\u003c/a\u003e for reporting and \u003ca href=\"https://github.com/veeceey\"\u003eveeceey\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate lowest supported marshmallow version to 3.26.2 (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/448\"\u003e#448\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/whyscream\"\u003ewhyscream\u003c/a\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.5.0 (2025-11-02)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003estrip_whitespace\u003c/code\u003e param to \u003ccode\u003eFileAwareEnv\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/431\"\u003e#431\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/eandersons\"\u003eeandersons\u003c/a\u003e for the suggestion and PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, which is EOL.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14.4.0 (2025-10-29)\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for ISO 8601 durations to \u003ccode\u003eenv.timedelta\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/sloria/environs/pull/434\"\u003e#434\u003c/a\u003e).\nThanks \u003ca href=\"https://github.com/lucas-bremond\"\u003elucas-bremond\u003c/a\u003e for the suggestion and PR.\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/sloria/environs/commit/947d7bdf40953a10422a94baee7621e72f6c57e3\"\u003e\u003ccode\u003e947d7bd\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/1a47a3658bf705e6270cb685efc38c22264c9110\"\u003e\u003ccode\u003e1a47a36\u003c/code\u003e\u003c/a\u003e fix: use fullmatch for expand_vars single-variable detection (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/450\"\u003e#450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/f678dabd2ebb32a22a90f439d8518f8c2ddcb60c\"\u003e\u003ccode\u003ef678dab\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/449\"\u003e#449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/03c2e94c5fd4fbb93f8f1b45e8ab261cc52916a5\"\u003e\u003ccode\u003e03c2e94\u003c/code\u003e\u003c/a\u003e Update used marshmallow version according to CVE-2025-68480 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/3085b60655034b72d322fb40498d42b2f9e3d9bb\"\u003e\u003ccode\u003e3085b60\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/68d92c021f01e1e5c1e4edf63f1cfe71a2362f27\"\u003e\u003ccode\u003e68d92c0\u003c/code\u003e\u003c/a\u003e Add SECUCURITY.md (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/a4f550996d7d75107fe6525ecf905ef6483ed3b3\"\u003e\u003ccode\u003ea4f5509\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/cceab04b25cc676a0a023bda83ac094ac755142d\"\u003e\u003ccode\u003ecceab04\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/6730f6c8a91e40ef607162730e64734b6b779d4a\"\u003e\u003ccode\u003e6730f6c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/442\"\u003e#442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sloria/environs/commit/d04b64fed0193c7b8a0bb4bb3891c463ab60d988\"\u003e\u003ccode\u003ed04b64f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sloria/environs/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sloria/environs/compare/14.3.0...14.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `execnet` from 2.1.1 to 2.1.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/execnet/blob/master/CHANGELOG.rst\"\u003eexecnet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.1.2 (2025-11-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#376](https://github.com/pytest-dev/execnet/issues/376) \u0026lt;https://github.com/pytest-dev/execnet/issues/376\u0026gt;\u003c/code\u003e__ fix artifact building - pin minimal version of hatch.\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/execnet/commit/9313ece783ba2bd565eb1a2a8a71be441af56199\"\u003e\u003ccode\u003e9313ece\u003c/code\u003e\u003c/a\u003e Release 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/45a4d872775ae77366b62d6c93adb5c3ec51c966\"\u003e\u003ccode\u003e45a4d87\u003c/code\u003e\u003c/a\u003e Test on pypy-3.11 instead of pypy-3.8 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/03462f5ad357cb28de83f28af6977e620b81c607\"\u003e\u003ccode\u003e03462f5\u003c/code\u003e\u003c/a\u003e Update hatchling version requirement in pyproject.toml (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/f05618084b3e524babe6d684e97443a16c4ecaf2\"\u003e\u003ccode\u003ef056180\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/a9d75e74b6913b9f4940de4d90e796b464ca88f9\"\u003e\u003ccode\u003ea9d75e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/9bfff13008d02cb5e0943ac57811b07ed7d81ffd\"\u003e\u003ccode\u003e9bfff13\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/caf108da5946aa4355eb853cb0f1fb5d6a359013\"\u003e\u003ccode\u003ecaf108d\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d3074cd90921317e8d9510bf2fb41e48ed7b62fd\"\u003e\u003ccode\u003ed3074cd\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/35aa8073a2ae51a38bb787784fd79d0bfba517cb\"\u003e\u003ccode\u003e35aa807\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/execnet/commit/d823f13ba81a1d14051dda54eb0931c73b7afdf7\"\u003e\u003ccode\u003ed823f13\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package (\u003ca href=\"https://redirect.github.com/pytest-dev/execnet/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/execnet/compare/v2.1.1...v2.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.1.45 to 3.1.46\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.46\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare a new release by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2063\"\u003egitpython-developers/GitPython#2063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 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/gitpython-developers/GitPython/pull/2067\"\u003egitpython-developers/GitPython#2067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e335c0f6\u003c/code\u003e to \u003ccode\u003e39d7dbf\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2068\"\u003egitpython-developers/GitPython#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 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/gitpython-developers/GitPython/pull/2070\"\u003egitpython-developers/GitPython#2070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e39d7dbf\u003c/code\u003e to \u003ccode\u003ef8fdfec\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2071\"\u003egitpython-developers/GitPython#2071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003eSymbolicReference.reference\u003c/code\u003e property by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add support for hasconfig git rule. by \u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 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/gitpython-developers/GitPython/pull/2076\"\u003egitpython-developers/GitPython#2076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse actual return type in annotation for method submodule_update by \u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003ef8fdfec\u003c/code\u003e to \u003ccode\u003e65321a2\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2082\"\u003egitpython-developers/GitPython#2082\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreliminary support for index format v3 by \u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/gitpython-developers/GitPython/pull/2084\"\u003egitpython-developers/GitPython#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin \u003ccode\u003emypy==1.18.2\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003eos.Pathlike\u003c/code\u003e by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2086\"\u003egitpython-developers/GitPython#2086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2093\"\u003egitpython-developers/GitPython#2093\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJoin \u003ccode\u003ePathlike\u003c/code\u003e Object to Tree by \u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2094\"\u003egitpython-developers/GitPython#2094\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/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2074\"\u003egitpython-developers/GitPython#2074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bvanelli\"\u003e\u003ccode\u003e@​bvanelli\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2075\"\u003egitpython-developers/GitPython#2075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/extrwi\"\u003e\u003ccode\u003e@​extrwi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2078\"\u003egitpython-developers/GitPython#2078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/blahgeek\"\u003e\u003ccode\u003e@​blahgeek\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2081\"\u003egitpython-developers/GitPython#2081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/George-Ogden\"\u003e\u003ccode\u003e@​George-Ogden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2087\"\u003egitpython-developers/GitPython#2087\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\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/gitpython-developers/GitPython/commit/9e24eb6b72c1851e46e09133b83b48f2059037d7\"\u003e\u003ccode\u003e9e24eb6\u003c/code\u003e\u003c/a\u003e Prepare next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/b8bb60e544a1f389120b5540c6e1e7505427c279\"\u003e\u003ccode\u003eb8bb60e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2094\"\u003e#2094\u003c/a\u003e from George-Ogden/join-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/c8b58c09904dabe67222165e4d3eecf4c8f07490\"\u003e\u003ccode\u003ec8b58c0\u003c/code\u003e\u003c/a\u003e Update test/test_tree.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/88e26141c738f6ac3beb1a433039611f88c2c30d\"\u003e\u003ccode\u003e88e2614\u003c/code\u003e\u003c/a\u003e Allow joining path to tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9fa28ae108dc39cfb13282cd18d4251d0118dd52\"\u003e\u003ccode\u003e9fa28ae\u003c/code\u003e\u003c/a\u003e Add failing tests for joining paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/6d66a02d14929976d9d8409773054e2e022eae0e\"\u003e\u003ccode\u003e6d66a02\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2093\"\u003e#2093\u003c/a\u003e from gitpython-developers/dependabot/submodules/git/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/f738029ab05fe8356022248e68f9119c46b2f1e5\"\u003e\u003ccode\u003ef738029\u003c/code\u003e\u003c/a\u003e Bump git/ext/gitdb from \u003ccode\u003e65321a2\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/eecc28d2e78d799105a2070acdb530ee5c81a9e8\"\u003e\u003ccode\u003eeecc28d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2086\"\u003e#2086\u003c/a\u003e from George-Ogden/true-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/0cb55fb4adca4f2b26767e85ef8652ef13b834a1\"\u003e\u003ccode\u003e0cb55fb\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Add tests with non-ascii characters\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/171062655e24b6a6ca1a3beab3c7679278350ab5\"\u003e\u003ccode\u003e1710626\u003c/code\u003e\u003c/a\u003e Add tests with non-ascii characters\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.45...3.1.46\"\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 `iniconfig` from 2.1.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.0\"\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 25.0 to 26.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\u003e26.0\u003c/h2\u003e\n\u003cp\u003eRead about the performance improvements here: \u003ca href=\"https://iscinumpy.dev/post/packaging-faster\"\u003ehttps://iscinumpy.dev/post/packaging-faster\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock 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/900\"\u003epypa/packaging#900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata by \u003ca href=\"https://github.com/brettcannon\"\u003e\u003ccode\u003e@​brettcannon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/948\"\u003epypa/packaging#948\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport writing metadata 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/846\"\u003epypa/packaging#846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e for \u003ccode\u003eVersion\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/1003\"\u003epypa/packaging#1003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifier\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/1004\"\u003epypa/packaging#1004\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e 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/897\"\u003epypa/packaging#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e 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/942\"\u003epypa/packaging#942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e 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/951\"\u003epypa/packaging#951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/932\"\u003epypa/packaging#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. 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/954\"\u003epypa/packaging#954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparsions by \u003ca href=\"https://github.com/JP-Ellis\"\u003e\u003ccode\u003e@​JP-Ellis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/939\"\u003epypa/packaging#939\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e by \u003ca href=\"https://github.com/dholth\"\u003e\u003ccode\u003e@​dholth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/860\"\u003epypa/packaging#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e 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/896\"\u003epypa/packaging#896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/868\"\u003epypa/packaging#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e by \u003ca href=\"https://github.com/bwoodsend\"\u003e\u003ccode\u003e@​bwoodsend\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/879\"\u003epypa/packaging#879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format by \u003ca href=\"https://github.com/di\"\u003e\u003ccode\u003e@​di\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/925\"\u003epypa/packaging#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon by \u003ca href=\"https://github.com/pradyunsg\"\u003e\u003ccode\u003e@​pradyunsg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/833\"\u003epypa/packaging#833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions by \u003ca href=\"https://github.com/Liam-DeVoe\"\u003e\u003ccode\u003e@​Liam-DeVoe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/931\"\u003epypa/packaging#931\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string 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/953\"\u003epypa/packaging#953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA root logger use found by ruff LOG, use \u003ccode\u003epackaging\u003c/code\u003e logger instead 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/965\"\u003epypa/packaging#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\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/1022\"\u003epypa/packaging#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first 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/1024\"\u003epypa/packaging#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct 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/1033\"\u003epypa/packaging#1033\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup by \u003ca href=\"https://github.com/hauntsaninja\"\u003e\u003ccode\u003e@​hauntsaninja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1019\"\u003epypa/packaging#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e by \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/869\"\u003epypa/packaging#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e by \u003ca href=\"https://github.com/bearomorphism\"\u003e\u003ccode\u003e@​bearomorphism\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/913\"\u003epypa/packaging#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003es in specifier comparison 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/986\"\u003epypa/packaging#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eSpecifier\u003c/code\u003e's Version 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/985\"\u003epypa/packaging#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster 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/987\"\u003epypa/packaging#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup 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/990\"\u003epypa/packaging#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ 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/988\"\u003epypa/packaging#988\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1055\"\u003epypa/packaging#1055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e 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/989\"\u003epypa/packaging#989\u003c/a\u003e and regression for \u003ccode\u003epackaging_legacy\u003c/code\u003e fixed 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/1048\"\u003epypa/packaging#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\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/993\"\u003epypa/packaging#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003efullmatch\u003c/code\u003e in a couple more places 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/992\"\u003epypa/packaging#992\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.0 - 2026-01-20\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003ePEP 751: support pylock (:pull:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 794: import name metadata (:pull:\u003ccode\u003e948\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport for writing metadata to a file (:pull:\u003ccode\u003e846\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e__replace__\u003c/code\u003e on Version (:pull:\u003ccode\u003e1003\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport positional pattern matching for \u003ccode\u003eVersion\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e1004\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 440 handling of prereleases for \u003ccode\u003eSpecifier.contains\u003c/code\u003e, \u003ccode\u003eSpecifierSet.contains\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e897\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eHandle PEP 440 edge case in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e (:pull:\u003ccode\u003e942\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust arbitrary equality intersection preservation in \u003ccode\u003eSpecifierSet\u003c/code\u003e (:pull:\u003ccode\u003e951\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003eFalse\u003c/code\u003e instead of raising for \u003ccode\u003e.contains\u003c/code\u003e with invalid version (:pull:\u003ccode\u003e932\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport arbitrary equality on arbitrary strings for \u003ccode\u003eSpecifier\u003c/code\u003e and \u003ccode\u003eSpecifierSet\u003c/code\u003e's \u003ccode\u003efilter\u003c/code\u003e and \u003ccode\u003econtains\u003c/code\u003e method. (:pull:\u003ccode\u003e954\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOnly try to parse as \u003ccode\u003eVersion\u003c/code\u003e on certain marker keys, return \u003ccode\u003eFalse\u003c/code\u003e on unequal ordered comparisons (:pull:\u003ccode\u003e939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003e_hash\u003c/code\u003e when unpickling \u003ccode\u003eTag()\u003c/code\u003e (:pull:\u003ccode\u003e860\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect comment and simplify implicit prerelease handling in \u003ccode\u003eSpecifier.prereleases\u003c/code\u003e (:pull:\u003ccode\u003e896\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse explicit \u003ccode\u003e_GLibCVersion\u003c/code\u003e \u003ccode\u003eNamedTuple\u003c/code\u003e in \u003ccode\u003e_manylinux\u003c/code\u003e (:pull:\u003ccode\u003e868\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDetect invalid license expressions containing \u003ccode\u003e()\u003c/code\u003e (:pull:\u003ccode\u003e879\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect regex for metadata \u003ccode\u003e'name'\u003c/code\u003e format (:pull:\u003ccode\u003e925\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove the message around expecting a semicolon (:pull:\u003ccode\u003e833\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport nested parens in license expressions (:pull:\u003ccode\u003e931\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd space before at symbol in \u003ccode\u003eRequirements\u003c/code\u003e string (:pull:\u003ccode\u003e953\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eA root logger use found, use a \u003ccode\u003epackaging\u003c/code\u003e logger instead (:pull:\u003ccode\u003e965\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eBetter support for subclassing \u003ccode\u003eMarker\u003c/code\u003e and \u003ccode\u003eRequirement\u003c/code\u003e (:pull:\u003ccode\u003e1022\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize all extras, not just if it comes first (:pull:\u003ccode\u003e1024\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't produce a broken repr if \u003ccode\u003eMarker\u003c/code\u003e fails to construct (:pull:\u003ccode\u003e1033\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid recompiling regexes in the tokenizer for a 3x speedup (:pull:\u003ccode\u003e1019\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance in \u003ccode\u003e_manylinux.py\u003c/code\u003e (:pull:\u003ccode\u003e869\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor cleanups to \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e913\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSkip redundant creation of \u003ccode\u003eVersion\u003c/code\u003e's in specifier comparison (:pull:\u003ccode\u003e986\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e985\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e a little faster (:pull:\u003ccode\u003e987\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMinor \u003ccode\u003eVersion\u003c/code\u003e regex cleanup (:pull:\u003ccode\u003e990\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster regex on Python 3.11.5+ for \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e988\u003c/code\u003e, :pull:\u003ccode\u003e1055\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eLazily calculate \u003ccode\u003e_key\u003c/code\u003e in \u003ccode\u003eVersion\u003c/code\u003e (:pull:\u003ccode\u003e989\u003c/code\u003e, :pull:\u003ccode\u003e1048\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFaster \u003ccode\u003ecanonicalize_version\u003c/code\u003e (:pull:\u003ccode\u003e993\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ere.fullmatch\u003c/code\u003e in a couple more places (:pull:\u003ccode\u003e992\u003c/code\u003e, :pull:\u003ccode\u003e1029\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003emap\u003c/code\u003e instead of generator (:pull:\u003ccode\u003e996\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003e._version\u003c/code\u003e (\u003ccode\u003e_Version\u003c/code\u003e, a \u003ccode\u003eNamedTuple\u003c/code\u003e) (:pull:\u003ccode\u003e995\u003c/code\u003e, :pull:\u003ccode\u003e1062\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\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/3b77a26f5a27473ad3b08194d773f325d018a2d0\"\u003e\u003ccode\u003e3b77a26\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/31371cce593d2bde0dd8c436ecfb7d53cb91cfb6\"\u003e\u003ccode\u003e31371cc\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0 final (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9627a8821f09e4c55cd6e9daadb617b67c4741c2\"\u003e\u003ccode\u003e9627a88\u003c/code\u003e\u003c/a\u003e perf: dual replace (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1064\"\u003e#1064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d5398b8bc19f3fad7b035ceb83023caf06d6e2da\"\u003e\u003ccode\u003ed5398b8\u003c/code\u003e\u003c/a\u003e fix: restore ._version as a compat shim (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1062\"\u003e#1062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3a7b600a126d237b2ad3cd7e25d2cb5c176276af\"\u003e\u003ccode\u003e3a7b600\u003c/code\u003e\u003c/a\u003e Bump for development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/d4eefdccf992e963c48011875301d93df6a7f2cc\"\u003e\u003ccode\u003ed4eefdc\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/46189124fb43d8989d370902c80ab156eb83a45d\"\u003e\u003ccode\u003e4618912\u003c/code\u003e\u003c/a\u003e docs: prepare for 26.0rc3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1060\"\u003e#1060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/0cf1b41b4b321ae08cad7d3e49cfaff5578fe813\"\u003e\u003ccode\u003e0cf1b41\u003c/code\u003e\u003c/a\u003e ci: test on first public release of CPythons (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/716beb1c0a5d7a398bf57fbd80bc2501811e616b\"\u003e\u003ccode\u003e716beb1\u003c/code\u003e\u003c/a\u003e perf:  10% faster stripping zeros (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1058\"\u003e#1058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/350a2306700b738f487f251efa278f532b263dee\"\u003e\u003ccode\u003e350a230\u003c/code\u003e\u003c/a\u003e fix: support CPython 3.11.0-3.11.4 and older PyPy3.11 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse` from 1.20.2 to 1.21.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/r1chardj0n3s/parse/releases\"\u003eparse's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.21.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix microsecond precision loss in timestamp parsing by \u003ca href=\"https://github.com/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\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/karthiksai109\"\u003e\u003ccode\u003e@​karthiksai109\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/223\"\u003er1chardj0n3s/parse#223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.21.0...1.21.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eallow triggering CI manually by \u003ca href=\"https://github.com/wimglenn\"\u003e\u003ccode\u003e@​wimglenn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/195\"\u003er1chardj0n3s/parse#195\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eActually raise exception by \u003ca href=\"https://github.com/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereadme: Clarify 'd' type by \u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the actions-infrastructure group 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/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow grouping char (,_) in decimal format string by \u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#221\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/shenanigansd\"\u003e\u003ccode\u003e@​shenanigansd\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/196\"\u003er1chardj0n3s/parse#196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dreua\"\u003e\u003ccode\u003e@​dreua\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/198\"\u003er1chardj0n3s/parse#198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/219\"\u003er1chardj0n3s/parse#219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moi90\"\u003e\u003ccode\u003e@​moi90\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/pull/221\"\u003er1chardj0n3s/parse#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/r1chardj0n3s/parse/compare/1.20.2...1.21.0\"\u003ehttps://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.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/r1chardj0n3s/parse/commit/9a2ae8d2c77e845415e5ad6952e7b2dba09a56d2\"\u003e\u003ccode\u003e9a2ae8d\u003c/code\u003e\u003c/a\u003e bump version for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/cd6bf203ab0353c038a0556fbbe0851ff56f539d\"\u003e\u003ccode\u003ecd6bf20\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/223\"\u003e#223\u003c/a\u003e from karthiksai109/fix-microsecond-precision\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/ba6803d57179a4b026c8ed51d970156653153b62\"\u003e\u003ccode\u003eba6803d\u003c/code\u003e\u003c/a\u003e Fix microsecond precision loss in timestamp parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/738447715c76f8ebc460b33320307faccafbc599\"\u003e\u003ccode\u003e7384477\u003c/code\u003e\u003c/a\u003e release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/35b9ffb355f94bc4cb781fbb3b0adff2232a5602\"\u003e\u003ccode\u003e35b9ffb\u003c/code\u003e\u003c/a\u003e Allow grouping char (,_) in decimal format string (\u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d50f48c4dcabbeaf738061c186314a1433572ae0\"\u003e\u003ccode\u003ed50f48c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/219\"\u003e#219\u003c/a\u003e from r1chardj0n3s/dependabot/github_actions/actions-i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/96cdf95c01a8e4d9659bcc81dfc20ada2f788276\"\u003e\u003ccode\u003e96cdf95\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the actions-infrastructure group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/d5bd49a6232f3a0ad074e30ec1e02959cdb3e70c\"\u003e\u003ccode\u003ed5bd49a\u003c/code\u003e\u003c/a\u003e restore 3.7 and 2.7 test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/5bfb45d9f30890e85a5c440e14fc25a930a3faaf\"\u003e\u003ccode\u003e5bfb45d\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/r1chardj0n3s/parse/commit/a497a407397f23ef527879a136e7fef2344180db\"\u003e\u003ccode\u003ea497a40\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/r1chardj0n3s/parse/issues/198\"\u003e#198\u003c/a\u003e from dreua/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/r1chardj0n3s/parse/compare/1.20.2...1.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parse-type` from 0.6.4 to 0.6.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jenisys/parse_type/releases\"\u003eparse-type's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDisable setuptools-scm: Too many side-effects\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.6.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eREADME: Remove \u0026quot;downloads\u0026quot; badge -- too noisy\u003c/li\u003e\n\u003cli\u003esetup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003etests: Fix file permissions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003edevelop:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003eCI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003eCI: Add python 3.14.0-rc.1 (as experimental python version).\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/jenisys/parse_type/commit/5c4126ae3973b5c0a4107cd8b29f2b74993be330\"\u003e\u003ccode\u003e5c4126a\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Disable setuptools-scm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/cb115df7fdfad2dfb98bff950f23a6aebd575e96\"\u003e\u003ccode\u003ecb115df\u003c/code\u003e\u003c/a\u003e invoke:\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/562679afba6859a9fd89487abb88255de614004c\"\u003e\u003ccode\u003e562679a\u003c/code\u003e\u003c/a\u003e CI: Add python 3.14.0-rc.1 (as experimental python version).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4d408d8a6dec4ec190e8497721a1b57db581962b\"\u003e\u003ccode\u003e4d408d8\u003c/code\u003e\u003c/a\u003e setup.py/pyproject.toml: Update, correct and tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/14c409e3c98c6c02ea143537ef6f54693513014f\"\u003e\u003ccode\u003e14c409e\u003c/code\u003e\u003c/a\u003e CI: Use actions/checkout@v5 (was: v4)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4fa182eef7156a32da5ec3ffda6c7c4e66d28482\"\u003e\u003ccode\u003e4fa182e\u003c/code\u003e\u003c/a\u003e develop: Use uv w/ direnv to setup workspace and venv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/4e4cb772a88caab981eac3fda7fed9e67821beb5\"\u003e\u003ccode\u003e4e4cb77\u003c/code\u003e\u003c/a\u003e tests: Fix file permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/35096a3f1c8f1d02b2809a69a68f84fc8d39904b\"\u003e\u003ccode\u003e35096a3\u003c/code\u003e\u003c/a\u003e CI: Use astral-sh/setup-uv action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jenisys/parse_type/commit/fdae4602ee39e949258146909535d337b4b0fb3f\"\u003e\u003ccode\u003efdae460\u003c/code\u003e\u003c/a\u003e CI: Add python 3.13.0-rc.3 (currently a pre-release).\u003c/li\u003e\n\u003cli\u003eSee ful...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-helm-charts/development/pull/494","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-helm-charts%2Fdevelopment/issues/494","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/494/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-02-23T19:23:27.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"3979774980","node_id":"PR_kwDOPrR8PM7FuvAs","number":1518,"state":"open","title":"deps(python)(deps): bump the python-dependencies group across 1 directory with 149 updates","user":"dependabot[bot]","labels":["dependencies","python","priority: high","security"],"assignees":["GrayGhostDev"],"locked":false,"comments_count":11,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-23T19:23:27.000Z","updated_at":"2026-03-02T20:07:47.730Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps): bump","group_name":"python-dependencies","update_count":149,"packages":[{"name":"aiodns","old_version":"3.2.0","new_version":"3.6.1","repository_url":"https://github.com/saghul/aiodns"},{"name":"aiohttp-retry","old_version":"2.8.3","new_version":"2.9.1","repository_url":"https://github.com/inyutin/aiohttp_retry"},{"name":"anthropic","old_version":"0.75.0","new_version":"0.83.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"apispec","old_version":"6.7.1","new_version":"6.9.0","repository_url":"https://github.com/marshmallow-code/apispec"},{"name":"apispec-webframeworks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/marshmallow-code/apispec-webframeworks"},{"name":"asgiref","old_version":"3.9.2","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"authlib","old_version":"1.6.5","new_version":"1.6.8","repository_url":"https://github.com/authlib/authlib"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.3","repository_url":"https://github.com/PyCQA/bandit"},{"name":"basedpyright","old_version":"1.36.2","new_version":"1.38.1","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"cachetools","old_version":"5.5.0","new_version":"5.5.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.1","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.127.0","new_version":"0.132.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.20.1","new_version":"3.24.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"googleapis-common-protos","old_version":"1.59.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.78.1","repository_url":"https://github.com/grpc/grpc"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"hvac","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jiter","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"langchain","old_version":"1.2.2","new_version":"1.2.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.2.6","new_version":"1.2.15","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.7","new_version":"1.1.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-text-splitters","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.0.5","new_version":"1.0.9","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.1","new_version":"0.3.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.6.1","new_version":"0.7.6","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"lxml","old_version":"6.0.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown","old_version":"3.7","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.4","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodejs-wheel-binaries","old_version":"24.12.0","new_version":"24.13.1","repository_url":"https://github.com/njzjz/nodejs-wheel"},{"name":"opentelemetry-api","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.3","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"ormsgpack","old_version":"1.12.1","new_version":"1.12.2","repository_url":"https://github.com/ormsgpack/ormsgpack"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"phonenumbers","old_version":"8.13.50","new_version":"8.13.55","repository_url":"https://github.com/daviddrysdale/python-phonenumbers"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"playwright","old_version":"1.57.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"postgrest","old_version":"0.18.0","new_version":"0.19.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"prometheus-fastapi-instrumentator","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/trallnag/prometheus-fastapi-instrumentator"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.3.2","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psutil","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pusher","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pusher/pusher-http-python"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycares","old_version":"5.0.0","new_version":"5.0.1","repository_url":"https://github.com/saghul/pycares"},{"name":"pydantic","old_version":"2.9.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.23.4","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.1","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.1","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"realtime","old_version":"2.5.3","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.9.11","new_version":"2024.11.6","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.14","new_version":"0.2.15"},{"name":"ruff","old_version":"0.14.10","new_version":"0.15.2","repository_url":"https://github.com/astral-sh/ruff"},{"name":"safety-schemas","old_version":"0.0.16","new_version":"0.0.18","repository_url":"https://github.com/pyupio/safety_schemas"},{"name":"sendgrid","old_version":"6.11.0","new_version":"6.12.5","repository_url":"https://github.com/sendgrid/sendgrid-python"},{"name":"sentry-sdk","old_version":"2.19.2","new_version":"2.53.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.45","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"storage3","old_version":"0.9.0","new_version":"0.12.2","repository_url":"https://github.com/supabase/supabase-py"},{"name":"stripe","old_version":"8.0.0","new_version":"8.11.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"supabase","old_version":"2.10.0","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supafunc","old_version":"0.7.0","new_version":"0.10.2","repository_url":"https://github.com/supabase/functions-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tomli","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.19.2","new_version":"0.24.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uuid-utils","old_version":"0.12.0","new_version":"0.14.1","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.41.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"yarl","old_version":"1.17.1","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"pylint","old_version":"3.3.2","new_version":"3.3.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest-html","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/pytest-dev/pytest-html"},{"name":"faker","old_version":"33.1.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"responses","old_version":"0.25.8","new_version":"0.26.0","repository_url":"https://github.com/getsentry/responses"},{"name":"ipython","old_version":"8.18.1","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"mkdocs-material","old_version":"9.7.1","new_version":"9.7.2","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"backrefs","old_version":"6.1","new_version":"6.2","repository_url":"https://github.com/facelessuser/backrefs"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 149 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiodns](https://github.com/saghul/aiodns) | `3.2.0` | `3.6.1` |\n| [aiohttp-retry](https://github.com/inyutin/aiohttp_retry) | `2.8.3` | `2.9.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.75.0` | `0.83.0` |\n| [apispec](https://github.com/marshmallow-code/apispec) | `6.7.1` | `6.9.0` |\n| [apispec-webframeworks](https://github.com/marshmallow-code/apispec-webframeworks) | `1.1.0` | `1.2.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.9.2` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.5` | `1.6.8` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.3` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.36.2` | `1.38.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `5.5.2` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.1` | `7.13.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.127.0` | `0.132.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.1` | `3.24.3` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.61.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.59.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.0` | `3.3.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.78.1` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [hvac](https://github.com/hvac/hvac) | `2.1.0` | `2.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.13.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.2.2` | `1.2.10` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.3.0` | `1.3.3` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.2.6` | `1.2.15` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.7` | `1.1.10` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.0` | `1.1.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.9` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.8` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.1` | `0.3.8` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.6.1` | `0.7.6` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.0` | `6.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.4` | `6.7.1` |\n| [nodejs-wheel-binaries](https://github.com/njzjz/nodejs-wheel) | `24.12.0` | `24.13.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.42b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.3` | `3.11.7` |\n| [ormsgpack](https://github.com/ormsgpack/ormsgpack) | `1.12.1` | `1.12.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) | `8.13.50` | `8.13.55` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.2` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.57.0` | `1.58.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `0.18.0` | `0.19.3` |\n| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `7.0.0` | `7.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.4.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `6.1.1` |\n| [pusher](https://github.com/pusher/pusher-http-python) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycares](https://github.com/saghul/pycares) | `5.0.0` | `5.0.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.23.4` | `2.42.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.11.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.0` | `3.3.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `3.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.22` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.5.3` | `2.28.0` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.9.11` | `2024.11.6` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.14` | `0.2.15` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.10` | `0.15.2` |\n| [safety-schemas](https://github.com/pyupio/safety_schemas) | `0.0.16` | `0.0.18` |\n| [sendgrid](https://github.com/sendgrid/sendgrid-python) | `6.11.0` | `6.12.5` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.19.2` | `2.53.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.45` | `2.0.46` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [storage3](https://github.com/supabase/supabase-py) | `0.9.0` | `0.12.2` |\n| [stripe](https://github.com/stripe/stripe-python) | `8.0.0` | `8.11.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.10.0` | `2.28.0` |\n| [supafunc](https://github.com/supabase/functions-py) | `0.7.0` | `0.10.2` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.3.0` | `2.4.0` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.3` | `0.14.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [typer](https://github.com/fastapi/typer) | `0.19.2` | `0.24.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.15.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.14.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.41.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.6.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.4` | `3.1.6` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.2` | `3.3.9` |\n| [pytest-html](https://github.com/pytest-dev/pytest-html) | `4.1.1` | `4.2.0` |\n| [faker](https://github.com/joke2k/faker) | `33.1.0` | `33.3.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.8` | `0.26.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `8.38.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.1` | `9.7.2` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.0` | `1.5.1` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.1` | `6.2` |\n\n\nUpdates `aiodns` from 3.2.0 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiodns/blob/master/ChangeLog\"\u003eaiodns's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.6.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePin pycares to \u0026lt; 5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.6.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ePrevents resolver from being garbage collected while queries are in progress\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSocket callback optimizations (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/172\"\u003e#172\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved performance for socket state handling\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed RTD links (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.9.0 to 4.11.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/186\"\u003e#186\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 1.0.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/181\"\u003e#181\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.2.1 to 7.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/193\"\u003e#193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.4.0 to 8.4.2 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/171\"\u003e#171\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/190\"\u003e#190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.16.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/170\"\u003e#170\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/179\"\u003e#179\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/195\"\u003e#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/197\"\u003e#197\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped uvloop from 0.21.0 to 0.22.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/202\"\u003e#202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped winloop from 0.1.8 to 0.3.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/182\"\u003e#182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/183\"\u003e#183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/184\"\u003e#184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/187\"\u003e#187\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/200\"\u003e#200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/201\"\u003e#201\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/checkout from 4 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/188\"\u003e#188\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded explicit close method (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/166\"\u003e#166\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eAllows proper cleanup of resources on demand\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed return type signature for CNAME and SOA records (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/162\"\u003e#162\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eCorrected type annotations for better type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImproved Windows event loop documentation (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/163\"\u003e#163\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eProvided more accurate information on supported event loops on Windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded pre-commit configuration with ruff (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/152\"\u003e#152\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved code quality and consistency\u003c/li\u003e\n\u003cli\u003eReformatted code and normalized end-of-line characters (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/155\"\u003e#155\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.8.0 to 4.9.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 0.26.0 to 1.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.1.1 to 6.2.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.3.5 to 8.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.15.0 to 1.16.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded fallback to \u003ccode\u003esock_state_cb\u003c/code\u003e if \u003ccode\u003eevent_thread\u003c/code\u003e creation fails (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/151\"\u003e#151\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved reliability on systems with exhausted inotify watches\u003c/li\u003e\n\u003cli\u003eImplemented transparent fallback mechanism to ensure DNS resolution continues to work\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImplemented strict typing (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/138\"\u003e#138\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/aio-libs/aiodns/commit/1067970f92bc386b8b04469e83287e140e39c562\"\u003e\u003ccode\u003e1067970\u003c/code\u003e\u003c/a\u003e Release 3.6.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/a85b558b71cf9464a4c876f57490224ee98e3829\"\u003e\u003ccode\u003ea85b558\u003c/code\u003e\u003c/a\u003e build: prevent incompatible pycares versions (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/6d63e75848ec975c51667c6c3fd115f27199716f\"\u003e\u003ccode\u003e6d63e75\u003c/code\u003e\u003c/a\u003e Bump winloop from 0.3.1 to 0.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/be007e21337ca638e4ee987d8a3c91ca31fd8211\"\u003e\u003ccode\u003ebe007e2\u003c/code\u003e\u003c/a\u003e Release 3.6.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/4cb8ab83bb21b7bbf152b9ca71baf2c74427fc9d\"\u003e\u003ccode\u003e4cb8ab8\u003c/code\u003e\u003c/a\u003e Fix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/e088cf48f6a30006e0545f8a4794210d3d99779f\"\u003e\u003ccode\u003ee088cf4\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/23dc7727637bedb972d91614ee73922ff84d4d1a\"\u003e\u003ccode\u003e23dc772\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/3a1bddf5dec8e79af7690d6caffec84746e096e4\"\u003e\u003ccode\u003e3a1bddf\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/b57721e1267c614f329eb36eb700ca2f1468446c\"\u003e\u003ccode\u003eb57721e\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/ac6803818ad533749bedc9e11b691da0fe4bbe85\"\u003e\u003ccode\u003eac68038\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/saghul/aiodns/compare/v3.2.0...v3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp-retry` from 2.8.3 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/inyutin/aiohttp_retry/releases\"\u003eaiohttp-retry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests init file by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/106\"\u003einyutin/aiohttp_retry#106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the client sometimes would not retry by \u003ca href=\"https://github.com/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\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/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRetry based on HTTP methods by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/103\"\u003einyutin/aiohttp_retry#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: _RequestContext._do_request() by \u003ca href=\"https://github.com/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ruff by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/99\"\u003einyutin/aiohttp_retry#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code-coverage by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/100\"\u003einyutin/aiohttp_retry#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python packages up to 3.13 by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/101\"\u003einyutin/aiohttp_retry#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo detected by codespell + add codespell workflow to avoid typos sneaking in by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove documentation a little bit by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/102\"\u003einyutin/aiohttp_retry#102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ci dependencies by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/104\"\u003einyutin/aiohttp_retry#104\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/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.0\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.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/inyutin/aiohttp_retry/commit/39b23915023dde0e0298b822de3d23960a5024e6\"\u003e\u003ccode\u003e39b2391\u003c/code\u003e\u003c/a\u003e Fix the client sometimes would not retry (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/4b406631f39963d7cda97086e89da6c740c56a6d\"\u003e\u003ccode\u003e4b40663\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/106\"\u003e#106\u003c/a\u003e from inyutin/tests-init-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5007c9a469e46198cab7f7a1f944166ae82d045f\"\u003e\u003ccode\u003e5007c9a\u003c/code\u003e\u003c/a\u003e Add tests init file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/75dbda9057f5cc7fe2d44ce6b60018381b84a08b\"\u003e\u003ccode\u003e75dbda9\u003c/code\u003e\u003c/a\u003e Add workflow_dispatch to publish package CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/f402cf6e0d59992945ae7833b903a8aef5a114b3\"\u003e\u003ccode\u003ef402cf6\u003c/code\u003e\u003c/a\u003e Package version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/1dca2d92da43cc011175f4cbef2c64d7f166d111\"\u003e\u003ccode\u003e1dca2d9\u003c/code\u003e\u003c/a\u003e publish CI update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5ea8c8eab3706617011b5ba7ff0a86cec5c4182a\"\u003e\u003ccode\u003e5ea8c8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/104\"\u003e#104\u003c/a\u003e from inyutin/dev-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/87c03ed64383710d05350ec0ce2110950fb327ab\"\u003e\u003ccode\u003e87c03ed\u003c/code\u003e\u003c/a\u003e Encode pytest asyncio setting in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/7af8295a7c99b1824c96f1a07f6cef1e1e64b4d7\"\u003e\u003ccode\u003e7af8295\u003c/code\u003e\u003c/a\u003e Update ci dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/723961d3c2e841da8232b2da92e354c70624310c\"\u003e\u003ccode\u003e723961d\u003c/code\u003e\u003c/a\u003e Retry based on HTTP methods (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.75.0 to 0.83.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.83.0\u003c/h2\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.82.0\u003c/h2\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.81.0\u003c/h2\u003e\n\u003ch2\u003e0.81.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.80.0...v0.81.0\"\u003ev0.80.0...v0.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Make new tool versions available as top level tool types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0a385c29d26981f846b7394aefc89eebb43a4b60\"\u003e0a385c2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.80.0\u003c/h2\u003e\n\u003ch2\u003e0.80.0 (2026-02-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.79.0...v0.80.0\"\u003ev0.79.0...v0.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Releasing claude-sonnet-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d518d6ecede3d0638f0b14950dc2be8efa0b4ff4\"\u003ed518d6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix spec errors (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1413a76f905e590fab583417f5cb1eef9f537c2c\"\u003e1413a76\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.83.0 (2026-02-19)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.82.0...v0.83.0\"\u003ev0.82.0...v0.83.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Add top-level cache control (automatic caching) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a940123da34ac33f0b6f20ce91807829451d1233\"\u003ea940123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate mock server docs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/34ef48ceb0f1734d6b695890f689dc42eb0b004e\"\u003e34ef48c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.82.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.81.0...v0.82.0\"\u003ev0.81.0...v0.82.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix shared UserLocation and error code types (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/da3b931a2be768d77c228a4804d2f7f75caeb71c\"\u003eda3b931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd backward-compat aliases for removed nested UserLocation classes (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1409\"\u003e#1409\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/56db1e3db6108e1c0f4e9363a5f23b54976dc877\"\u003e56db1e3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.81.0 (2026-02-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.80.0...v0.81.0\"\u003ev0.80.0...v0.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/0a385c29d26981f846b7394aefc89eebb43a4b60\"\u003e0a385c2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.80.0 (2026-02-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.79.0...v0.80.0\"\u003ev0.79.0...v0.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Releasing claude-sonnet-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d518d6ecede3d0638f0b14950dc2be8efa0b4ff4\"\u003ed518d6e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix spec errors (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1413a76f905e590fab583417f5cb1eef9f537c2c\"\u003e1413a76\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove speed from ga messages (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1402\"\u003e#1402\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f6ce67c3ed5f2fc4a2fc48fb9d7bc6f1bbb5bd4a\"\u003ef6ce67c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\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/anthropics/anthropic-sdk-python/commit/7a6c642f51b603f9ef46c5603f48ccd55371e4cb\"\u003e\u003ccode\u003e7a6c642\u003c/code\u003e\u003c/a\u003e release: 0.83.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7ecac54c1ae91eb205fff16acbf65b36e444ed19\"\u003e\u003ccode\u003e7ecac54\u003c/code\u003e\u003c/a\u003e feat(api): Add top-level cache control (automatic caching)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/74793c8f43608aa19e1a05eea7b715509bfc1aa5\"\u003e\u003ccode\u003e74793c8\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f1181087ae843cad9ebd2cdab0e5bc052eec6de6\"\u003e\u003ccode\u003ef118108\u003c/code\u003e\u003c/a\u003e chore: update mock server docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c6499b9515a81eca05b6008920255f5f0f2ca17e\"\u003e\u003ccode\u003ec6499b9\u003c/code\u003e\u003c/a\u003e release: 0.82.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/acc4720fca9aa1c3690dc52d124ac79787b71b3a\"\u003e\u003ccode\u003eacc4720\u003c/code\u003e\u003c/a\u003e release: 0.81.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4de03c2ddc247084770a04a203d2e71666a6ad37\"\u003e\u003ccode\u003e4de03c2\u003c/code\u003e\u003c/a\u003e release: 0.80.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1173\"\u003e#1173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/cd1b39bf073c5482ed1c717f11147365eb68bbe9\"\u003e\u003ccode\u003ecd1b39b\u003c/code\u003e\u003c/a\u003e release: 0.79.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/fb52a6a09d09cde88913e36dadb03c335815d79a\"\u003e\u003ccode\u003efb52a6a\u003c/code\u003e\u003c/a\u003e fix: pass speed parameter through in sync beta count_tokens\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b7c2df239d1256ee358501a2cd89bfe9ea129abe\"\u003e\u003ccode\u003eb7c2df2\u003c/code\u003e\u003c/a\u003e feat(api): enabling fast-mode in claude-opus-4-6\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.75.0...v0.83.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec` from 6.7.1 to 6.9.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec/blob/dev/CHANGELOG.rst\"\u003eapispec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.9.0 (2025-11-30)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eexamples\u003c/code\u003e property from field metadata (:pr:\u003ccode\u003e999\u003c/code\u003e).\nThanks :user:\u003ccode\u003eFlix6x\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 (:pr:\u003ccode\u003e998\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 (:pr:\u003ccode\u003e994\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.4 (2025-09-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eTimeDelta\u003c/code\u003e field type according to \u003ccode\u003eserialization_type\u003c/code\u003e (:pr:\u003ccode\u003e990\u003c/code\u003e).\nThanks :user:\u003ccode\u003eLewisHaley\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.3 (2025-09-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e if\n\u003ccode\u003eunknown\u003c/code\u003e is not set (:pr:\u003ccode\u003e988\u003c/code\u003e).\nThanks :user:\u003ccode\u003emwgamble\u003c/code\u003e for reporting.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e according to \u003ccode\u003eunknown\u003c/code\u003e\nvalue passed at schema instantiation, not only as \u003ccode\u003eMeta\u003c/code\u003e attribute\n(:pr:\u003ccode\u003e988\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.2 (2025-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e doesn't override \u003ccode\u003eadditionalProperties\u003c/code\u003e explicitly\npassed to \u003ccode\u003efields.Dict\u003c/code\u003e (:pr:\u003ccode\u003e976\u003c/code\u003e).\nThanks :user:\u003ccode\u003e0x0400\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerf improvement to \u003ccode\u003efilter_excluded_fields\u003c/code\u003e (:issue:\u003ccode\u003e972\u003c/code\u003e).\nThanks :user:\u003ccode\u003eallrob23\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.1 (2025-01-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\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/marshmallow-code/apispec/commit/58265d009f7cf027f22356a3fe9ea80813bcb36e\"\u003e\u003ccode\u003e58265d0\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/e25f2d4ab50855cfb9977dbbd167d1f67eae4f35\"\u003e\u003ccode\u003ee25f2d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/999\"\u003e#999\u003c/a\u003e from SeitaBV/feat/support-examples-property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/eab75c737746e46c9002f1d59b1fcd3c46f5855c\"\u003e\u003ccode\u003eeab75c7\u003c/code\u003e\u003c/a\u003e feat: add test of metadata examples field\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/3a620c64b7506374cf8094deb0d786ee221e95a9\"\u003e\u003ccode\u003e3a620c6\u003c/code\u003e\u003c/a\u003e chore: AUTHORS.rst entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/0349ca265eda89f8e633aa3b09b0a8348afb6d11\"\u003e\u003ccode\u003e0349ca2\u003c/code\u003e\u003c/a\u003e docs: thank myself (a bit presumptuous, don't I think)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/8f74aa5bed1d3e65d6917674d2475701df275a53\"\u003e\u003ccode\u003e8f74aa5\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/32f4f34a229674d274e17b50b57ffa4e9610df4c\"\u003e\u003ccode\u003e32f4f34\u003c/code\u003e\u003c/a\u003e docs: add changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/867ae3b93254e822af1a18e83ebb6761aa07511b\"\u003e\u003ccode\u003e867ae3b\u003c/code\u003e\u003c/a\u003e feat: 'examples' is a supported property in OpenAPI 3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/40210699852a926c13a8d351e280c4a41070fc27\"\u003e\u003ccode\u003e4021069\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/c10c481ee4300056e07c134272d13c44a3283f90\"\u003e\u003ccode\u003ec10c481\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/998\"\u003e#998\u003c/a\u003e from marshmallow-code/py314\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec/compare/6.7.1...6.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec-webframeworks` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/blob/main/CHANGELOG.rst\"\u003eapispec-webframeworks's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2024-09-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTornadoPlugin: Ensure consistent ordering for HTTP path keys\n(:pr:\u003ccode\u003e159\u003c/code\u003e). Thanks :user:\u003ccode\u003ebhperry\u003c/code\u003e for the PR.\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/marshmallow-code/apispec-webframeworks/commit/ebf43f149e685e3fe2abca2a1224b87e6c7415c1\"\u003e\u003ccode\u003eebf43f1\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/e26e46369626b225eb2776075e1ad116f18dc6b5\"\u003e\u003ccode\u003ee26e463\u003c/code\u003e\u003c/a\u003e Consistent ordering for HTTP path keys (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/abcb590d894572ab53865ad8f7d355f62c94cbf7\"\u003e\u003ccode\u003eabcb590\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/377fe6bd9aa8fc70d24dd65ef1d55016d8dd4fea\"\u003e\u003ccode\u003e377fe6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/bda9880a0d91692162ca87dcb30f35c404d9afbd\"\u003e\u003ccode\u003ebda9880\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/b5940fa3aa996eecce81dd536689aca3844c7580\"\u003e\u003ccode\u003eb5940fa\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/6c7f164bc58a9c647ecda3dd801bc75dab9f21d1\"\u003e\u003ccode\u003e6c7f164\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/154\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/7326a3f262caf41c3f64648cc231fdb9f6ac9d48\"\u003e\u003ccode\u003e7326a3f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/9da38826c861ea88f60f173e6f9bb212b522a22c\"\u003e\u003ccode\u003e9da3882\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/1db8ed966be0e710a14e6518a86f6ce72981504f\"\u003e\u003ccode\u003e1db8ed9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/compare/1.1.0...1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.9.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\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/django/asgiref/commit/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/asgiref/compare/3.9.2...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `authlib` from 1.6.5 to 1.6.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.8\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.7...v1.6.8\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eEdDSA\u003c/code\u003e to default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSet supported algorithms for the default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/p\u003e\n\u003ch2\u003ev1.6.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(ClientAuth): fix incorrect signature when Content-Type is x-www-form-urlencoded by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable by \u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter. by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/844\"\u003eauthlib/authlib#844\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/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\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/authlib/authlib/blob/main/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e.. meta::\n:description: The full list of changes between each Authlib release.\u003c/p\u003e\n\u003cp\u003eHere you can see the full list of changes between each Authlib release.\u003c/p\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eUnreleased\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eOpenID Connect RP-Initiated Logout 1.0 \u0026lt;https://openid.net/specs/openid-connect-rpinitiated-1_0.html\u0026gt;\u003c/code\u003e_.\nSee :ref:\u003ccode\u003especs/rpinitiated\u003c/code\u003e for details. :issue:\u003ccode\u003e500\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePer RFC 6749 Section 3.3, the \u003ccode\u003escope\u003c/code\u003e parameter is now optional at both\nauthorization and token endpoints. \u003ccode\u003eclient.get_allowed_scope()\u003c/code\u003e is called\nto determine the default scope when omitted. :issue:\u003ccode\u003e845\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9, start support Python 3.14. :pr:\u003ccode\u003e850\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eAuthorizationServerMetadata.validate()\u003c/code\u003e to compose with RFC extension classes.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at=0\u003c/code\u003e being incorrectly treated as \u003ccode\u003eNone\u003c/code\u003e. :issue:\u003ccode\u003e530\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eResourceProtector\u003c/code\u003e decorator to be used without parentheses. :issue:\u003ccode\u003e604\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUpgrade Guide: :ref:\u003ccode\u003ejoserfc_upgrade\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 1.6.6\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Dec 12, 2025\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter, :pr:\u003ccode\u003e844\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix incorrect signature when \u003ccode\u003eContent-Type\u003c/code\u003e is x-www-form-urlencoded for OAuth 1.0 Client, :pr:\u003ccode\u003e778\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eexpires_in\u003c/code\u003e in \u003ccode\u003eOAuth2Token\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable, :pr:\u003ccode\u003e842\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAlways track \u003ccode\u003estate\u003c/code\u003e in session for OAuth client integrations.\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/authlib/authlib/commit/a769f343ae8d43236448e3e74445980861812e82\"\u003e\u003ccode\u003ea769f34\u003c/code\u003e\u003c/a\u003e chore: release 1.6.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/84f3fa2965a189c16528329e8cfe41d094008588\"\u003e\u003ccode\u003e84f3fa2\u003c/code\u003e\u003c/a\u003e fix: add EdDSA to default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/38e872a3f5b97d2658507acc8762a4e18adaa50e\"\u003e\u003ccode\u003e38e872a\u003c/code\u003e\u003c/a\u003e chore: release 1.6.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b87c32ed07b8ae7f805873e1c9cafd1016761df7\"\u003e\u003ccode\u003eb87c32e\u003c/code\u003e\u003c/a\u003e fix: remove \u0026quot;none\u0026quot; algorithm from default jwt instance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/bb7a315befbad333faf9a23ef574d6e3134a6774\"\u003e\u003ccode\u003ebb7a315\u003c/code\u003e\u003c/a\u003e chore: release 1.6.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/0a423d4638bed1c0fe4597b2296a85c5bb59fba2\"\u003e\u003ccode\u003e0a423d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/844\"\u003e#844\u003c/a\u003e from azmeuk/806-get-jwt-config-client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/2808378611dd6fb2532b189a9087877d8f0c0489\"\u003e\u003ccode\u003e2808378\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/714502a4738bc29f26eb245b0c66718d8536cdda\"\u003e\u003ccode\u003e714502a\u003c/code\u003e\u003c/a\u003e feat: get_jwt_config takes a client parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/260d04edee23d8470057ea659c16fb8a2c7b0dc2\"\u003e\u003ccode\u003e260d04e\u003c/code\u003e\u003c/a\u003e Fix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/eb37124bbbec6ccbfba3699d8960f9710d330ad8\"\u003e\u003ccode\u003eeb37124\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/778\"\u003e#778\u003c/a\u003e from shc261392/fix-httpx-oauth1-form-data-incorrect-s...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\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/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/36d6f3c091d84dc547019d773ab6e63a1cbc23af\"\u003e\u003ccode\u003e36d6f3c\u003c/code\u003e\u003c/a\u003e Update tox tests for Python 3.10 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/da0d33816ba5c5f8f72a380720ad054596867807\"\u003e\u003ccode\u003eda0d338\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1341\"\u003e#1341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/649b9bdf87f4f9d850b29819b14b847bd3b8f970\"\u003e\u003ccode\u003e649b9bd\u003c/code\u003e\u003c/a\u003e Add check for hardcoded passwords in dicts. (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1338\"\u003e#1338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/3c56109061524f5907cc4d475b7370bac47a451b\"\u003e\u003ccode\u003e3c56109\u003c/code\u003e\u003c/a\u003e Fix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1337\"\u003e#1337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b790ce22f0a69f53468c1755e9d37e6349a2c8c2\"\u003e\u003ccode\u003eb790ce2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1335\"\u003e#1335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/0b73bbe59642097050d5c698e55d13bae2c6b78c\"\u003e\u003ccode\u003e0b73bbe\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.36.2 to 1.38.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ce372dde9b384dfa25c0294dc637ce0ec4638a05\"\u003e\u003ccode\u003ece372dd\u003c/code\u003e\u003c/a\u003e 1.38.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/83c1dc799597a1d342caa9dc6476711c1086dde9\"\u003e\u003ccode\u003e83c1dc7\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e guards in match statements (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/41f6c01f71734513e6ac518d52e09fd905abae3d\"\u003e\u003ccode\u003e41f6c01\u003c/code\u003e\u003c/a\u003e fix docstubs not being generated for older python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b00fdc450d57f58202bf37d641be0014a86c4952\"\u003e\u003ccode\u003eb00fdc4\u003c/code\u003e\u003c/a\u003e add tests to ensure that docstubs for multiple python versions are correctly ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/c34d0449c5a53aedabd07707813a3b7b84556cb5\"\u003e\u003ccode\u003ec34d044\u003c/code\u003e\u003c/a\u003e fix language server crash on abstract setter with no parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/55769d6a28b348ff0aaa3cc5e0917f0823f70b3c\"\u003e\u003ccode\u003e55769d6\u003c/code\u003e\u003c/a\u003e fix crash generating docstubs for older python versions caused by breaking ch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/c3d29bf0deef8d16c4df8aa004651d1230c3e743\"\u003e\u003ccode\u003ec3d29bf\u003c/code\u003e\u003c/a\u003e fuck bash worst language ever\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/4bf506e4d15144c33f6ee03deeb72af9e830e17c\"\u003e\u003ccode\u003e4bf506e\u003c/code\u003e\u003c/a\u003e update links to docify repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bc0955b639d6842812a83b6094538c1c84b5a6c4\"\u003e\u003ccode\u003ebc0955b\u003c/code\u003e\u003c/a\u003e update \u003ccode\u003egenerate_docstubs.py\u003c/code\u003e script to use the new docify multithreaded mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a66be176971051dad271284e3e72d30fce0e8430\"\u003e\u003ccode\u003ea66be17\u003c/code\u003e\u003c/a\u003e bump python dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.36.2...v1.38.1\"\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.4 to 4.14.3\n\nUpdates `billiard` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks by \u003ca href=\"https://github.com/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/439\"\u003ecelery/billiard#439\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/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.3...v4.2.4\"\u003ehttps://github.com/celery/billiard/compare/v4.2.3...v4.2.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/436\"\u003ecelery/billiard#436\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/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.2...v4.2.3\"\u003ehttps://github.com/celery/billiard/compare/v4.2.2...v4.2.3\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/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.4 - 2025-11-30\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.3 - 2025-11-16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\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/celery/billiard/commit/69c2f296c2b36622a90c548f26c940712cb9a1df\"\u003e\u003ccode\u003e69c2f29\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/973c773fee4ccd1ab1151d0801905176b284075d\"\u003e\u003ccode\u003e973c773\u003c/code\u003e\u003c/a\u003e Eliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/51153949934c247ac23de990eee4073adcf08083\"\u003e\u003ccode\u003e5115394\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/437\"\u003e#437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/e8f51d1995cf251787001683dbf443098d8b0ed7\"\u003e\u003ccode\u003ee8f51d1\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/8603172ab818f5069dd191dfaa3eb0a7653c6dda\"\u003e\u003ccode\u003e8603172\u003c/code\u003e\u003c/a\u003e Ensure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/849a3e8414cae0ba953d7c164129c1320e2a241d\"\u003e\u003ccode\u003e849a3e8\u003c/code\u003e\u003c/a\u003e Bump github...\n\n_Description has been truncated_","html_url":"https://github.com/GrayGhostDev/ToolboxAI-Solutions/pull/1518","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrayGhostDev%2FToolboxAI-Solutions/issues/1518","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1518/packages"}},{"old_version":"2.0.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-02-19T22:12:29.000Z","version_change":"2.0.0 → 2.3.0","issue":{"uuid":"3965385142","node_id":"PR_kwDORJXmGM7FAOA3","number":251,"state":"open","title":"Bump iniconfig from 2.0.0 to 2.3.0","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-19T22:12:29.000Z","updated_at":"2026-02-19T22:12:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.0.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.0.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/26\"\u003e#26\u003c/a\u003e - list individuals in license file by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/52\"\u003epytest-dev/iniconfig#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun tests in CI by \u003ca href=\"https://github.com/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epypa/gh-action-pypi-publish@release/v1\u003c/code\u003e @ GHA by \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12-3.13 and drop EOL 3.7 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/56\"\u003epytest-dev/iniconfig#56\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/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix artifact building - pin minimal version of hatch\u003c/li\u003e\n\u003cli\u003edrop eol python 3.8\u003c/li\u003e\n\u003cli\u003eadd python 3.12 and 3.13\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.0.0\u0026new-version=2.3.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/masonj0/favplc/pull/251","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/masonj0%2Ffavplc/issues/251","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/251/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-02-17T20:22:27.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"3954511196","node_id":"PR_kwDORSj3Nc7EcwHk","number":10,"state":"closed","title":"Bump iniconfig from 2.1.0 to 2.3.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-17T21:52:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-17T20:22:27.000Z","updated_at":"2026-02-17T21:52:35.000Z","time_to_close":5405,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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/turintech/openvino-runtime/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/turintech%2Fopenvino-runtime/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-02-16T18:24:21.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"3949032493","node_id":"PR_kwDOPrR8PM7EKmEP","number":1511,"state":"open","title":"deps(python)(deps): bump the python-dependencies group across 1 directory with 142 updates","user":"dependabot[bot]","labels":["dependencies","python","priority: high","security"],"assignees":["GrayGhostDev"],"locked":false,"comments_count":10,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-16T18:24:21.000Z","updated_at":"2026-02-16T18:25:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python)(deps): bump","group_name":"python-dependencies","update_count":142,"packages":[{"name":"aiodns","old_version":"3.2.0","new_version":"3.6.1","repository_url":"https://github.com/saghul/aiodns"},{"name":"aiohttp-retry","old_version":"2.8.3","new_version":"2.9.1","repository_url":"https://github.com/inyutin/aiohttp_retry"},{"name":"anthropic","old_version":"0.75.0","new_version":"0.79.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"apispec","old_version":"6.7.1","new_version":"6.9.0","repository_url":"https://github.com/marshmallow-code/apispec"},{"name":"apispec-webframeworks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/marshmallow-code/apispec-webframeworks"},{"name":"asgiref","old_version":"3.9.2","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"authlib","old_version":"1.6.5","new_version":"1.6.8","repository_url":"https://github.com/authlib/authlib"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.3","repository_url":"https://github.com/PyCQA/bandit"},{"name":"basedpyright","old_version":"1.36.2","new_version":"1.38.0","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"cachetools","old_version":"5.5.0","new_version":"5.5.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.1","new_version":"7.13.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"dnspython","old_version":"2.6.1","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"fastapi","old_version":"0.127.0","new_version":"0.129.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.20.1","new_version":"3.24.2","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"googleapis-common-protos","old_version":"1.59.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.78.0","repository_url":"https://github.com/grpc/grpc"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"hvac","old_version":"2.1.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jiter","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"langchain","old_version":"1.2.2","new_version":"1.2.10","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.3.0","new_version":"1.3.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.2.6","new_version":"1.2.13","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.7","new_version":"1.1.9","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.5","new_version":"1.0.7","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.1","new_version":"0.3.6","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.6.1","new_version":"0.7.3","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"lxml","old_version":"6.0.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown","old_version":"3.7","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.4","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodejs-wheel-binaries","old_version":"24.12.0","new_version":"24.13.1","repository_url":"https://github.com/njzjz/nodejs-wheel"},{"name":"opentelemetry-api","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.21.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.42b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.3","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"ormsgpack","old_version":"1.12.1","new_version":"1.12.2","repository_url":"https://github.com/ormsgpack/ormsgpack"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/davidhalter/parso"},{"name":"phonenumbers","old_version":"8.13.50","new_version":"8.13.55","repository_url":"https://github.com/daviddrysdale/python-phonenumbers"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.2","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"playwright","old_version":"1.57.0","new_version":"1.58.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"postgrest","old_version":"0.18.0","new_version":"0.19.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"prometheus-fastapi-instrumentator","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/trallnag/prometheus-fastapi-instrumentator"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.3.2","new_version":"0.4.1","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psutil","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pusher","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pusher/pusher-http-python"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pycares","old_version":"5.0.0","new_version":"5.0.1","repository_url":"https://github.com/saghul/pycares"},{"name":"pydantic","old_version":"2.9.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.23.4","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyparsing","old_version":"3.3.0","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.12.3","new_version":"4.13.1","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"3.3.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.14.2","new_version":"5.16.1","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"realtime","old_version":"2.5.3","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.9.11","new_version":"2024.11.6","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.14","new_version":"0.2.15"},{"name":"ruff","old_version":"0.14.10","new_version":"0.15.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"safety-schemas","old_version":"0.0.16","new_version":"0.0.18","repository_url":"https://github.com/pyupio/safety_schemas"},{"name":"sendgrid","old_version":"6.11.0","new_version":"6.12.5","repository_url":"https://github.com/sendgrid/sendgrid-python"},{"name":"sentry-sdk","old_version":"2.19.2","new_version":"2.53.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.45","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"storage3","old_version":"0.9.0","new_version":"0.12.2","repository_url":"https://github.com/supabase/supabase-py"},{"name":"stripe","old_version":"8.0.0","new_version":"8.11.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"supabase","old_version":"2.10.0","new_version":"2.28.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supafunc","old_version":"0.7.0","new_version":"0.10.2","repository_url":"https://github.com/supabase/functions-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tomli","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.14.0","repository_url":"https://github.com/sdispater/tomlkit"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.19.2","new_version":"0.23.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uuid-utils","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"},{"name":"werkzeug","old_version":"3.1.4","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"yarl","old_version":"1.17.1","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"pylint","old_version":"3.3.2","new_version":"3.3.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest-html","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/pytest-dev/pytest-html"},{"name":"faker","old_version":"33.1.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"ipython","old_version":"8.18.1","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"gitpython","old_version":"3.1.45","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 142 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiodns](https://github.com/saghul/aiodns) | `3.2.0` | `3.6.1` |\n| [aiohttp-retry](https://github.com/inyutin/aiohttp_retry) | `2.8.3` | `2.9.1` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.75.0` | `0.79.0` |\n| [apispec](https://github.com/marshmallow-code/apispec) | `6.7.1` | `6.9.0` |\n| [apispec-webframeworks](https://github.com/marshmallow-code/apispec-webframeworks) | `1.1.0` | `1.2.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.9.2` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.5` | `1.6.8` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.3` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.36.2` | `1.38.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `5.5.2` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.1` | `7.13.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.6.1` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.127.0` | `0.129.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.1` | `3.24.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.61.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.59.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.0` | `3.3.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.78.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [hvac](https://github.com/hvac/hvac) | `2.1.0` | `2.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.13.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.2.2` | `1.2.10` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.3.0` | `1.3.3` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.2.6` | `1.2.13` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.7` | `1.1.9` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.8` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.5` | `1.0.7` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.1` | `0.3.6` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.6.1` | `0.7.3` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.0` | `6.0.2` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.4` | `6.7.1` |\n| [nodejs-wheel-binaries](https://github.com/njzjz/nodejs-wheel) | `24.12.0` | `24.13.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.21.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.42b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.42b0` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.3` | `3.11.7` |\n| [ormsgpack](https://github.com/ormsgpack/ormsgpack) | `1.12.1` | `1.12.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.5` | `0.8.6` |\n| [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) | `8.13.50` | `8.13.55` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.2` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.57.0` | `1.58.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `0.18.0` | `0.19.3` |\n| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `7.0.0` | `7.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.4.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `6.1.1` |\n| [pusher](https://github.com/pusher/pusher-http-python) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pycares](https://github.com/saghul/pycares) | `5.0.0` | `5.0.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.2` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.23.4` | `2.41.5` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.11.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.0` | `3.3.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.3` | `4.13.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `3.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.22` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.2` | `5.16.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.5.3` | `2.28.0` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.9.11` | `2024.11.6` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.14` | `0.2.15` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.10` | `0.15.1` |\n| [safety-schemas](https://github.com/pyupio/safety_schemas) | `0.0.16` | `0.0.18` |\n| [sendgrid](https://github.com/sendgrid/sendgrid-python) | `6.11.0` | `6.12.5` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.19.2` | `2.53.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.45` | `2.0.46` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [storage3](https://github.com/supabase/supabase-py) | `0.9.0` | `0.12.2` |\n| [stripe](https://github.com/stripe/stripe-python) | `8.0.0` | `8.11.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.10.0` | `2.28.0` |\n| [supafunc](https://github.com/supabase/functions-py) | `0.7.0` | `0.10.2` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.3.0` | `2.4.0` |\n| [tomlkit](https://github.com/sdispater/tomlkit) | `0.13.3` | `0.14.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [typer](https://github.com/fastapi/typer) | `0.19.2` | `0.23.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.15.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.14.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.6.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.4` | `3.1.5` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.17.1` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.0` | `1.5.1` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.2` | `3.3.9` |\n| [pytest-html](https://github.com/pytest-dev/pytest-html) | `4.1.1` | `4.2.0` |\n| [faker](https://github.com/joke2k/faker) | `33.1.0` | `33.3.1` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `8.38.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.45` | `3.1.46` |\n\n\nUpdates `aiodns` from 3.2.0 to 3.6.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiodns/blob/master/ChangeLog\"\u003eaiodns's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.6.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePin pycares to \u0026lt; 5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.6.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ePrevents resolver from being garbage collected while queries are in progress\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSocket callback optimizations (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/172\"\u003e#172\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved performance for socket state handling\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed RTD links (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.9.0 to 4.11.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/186\"\u003e#186\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 1.0.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/181\"\u003e#181\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.2.1 to 7.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/193\"\u003e#193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.4.0 to 8.4.2 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/171\"\u003e#171\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/190\"\u003e#190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.16.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/170\"\u003e#170\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/179\"\u003e#179\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/195\"\u003e#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/197\"\u003e#197\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped uvloop from 0.21.0 to 0.22.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/202\"\u003e#202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped winloop from 0.1.8 to 0.3.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/182\"\u003e#182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/183\"\u003e#183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/184\"\u003e#184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/187\"\u003e#187\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/200\"\u003e#200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/201\"\u003e#201\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/checkout from 4 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/188\"\u003e#188\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded explicit close method (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/166\"\u003e#166\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eAllows proper cleanup of resources on demand\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed return type signature for CNAME and SOA records (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/162\"\u003e#162\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eCorrected type annotations for better type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImproved Windows event loop documentation (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/163\"\u003e#163\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eProvided more accurate information on supported event loops on Windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded pre-commit configuration with ruff (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/152\"\u003e#152\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved code quality and consistency\u003c/li\u003e\n\u003cli\u003eReformatted code and normalized end-of-line characters (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/155\"\u003e#155\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdated dependencies\n\u003cul\u003e\n\u003cli\u003eBumped pycares from 4.8.0 to 4.9.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-asyncio from 0.26.0 to 1.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest-cov from 6.1.1 to 6.2.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped pytest from 8.3.5 to 8.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped mypy from 1.15.0 to 1.16.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdded fallback to \u003ccode\u003esock_state_cb\u003c/code\u003e if \u003ccode\u003eevent_thread\u003c/code\u003e creation fails (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/151\"\u003e#151\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eImproved reliability on systems with exhausted inotify watches\u003c/li\u003e\n\u003cli\u003eImplemented transparent fallback mechanism to ensure DNS resolution continues to work\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImplemented strict typing (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/138\"\u003e#138\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/aio-libs/aiodns/commit/1067970f92bc386b8b04469e83287e140e39c562\"\u003e\u003ccode\u003e1067970\u003c/code\u003e\u003c/a\u003e Release 3.6.1 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/a85b558b71cf9464a4c876f57490224ee98e3829\"\u003e\u003ccode\u003ea85b558\u003c/code\u003e\u003c/a\u003e build: prevent incompatible pycares versions (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/6d63e75848ec975c51667c6c3fd115f27199716f\"\u003e\u003ccode\u003e6d63e75\u003c/code\u003e\u003c/a\u003e Bump winloop from 0.3.1 to 0.4.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/be007e21337ca638e4ee987d8a3c91ca31fd8211\"\u003e\u003ccode\u003ebe007e2\u003c/code\u003e\u003c/a\u003e Release 3.6.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/4cb8ab83bb21b7bbf152b9ca71baf2c74427fc9d\"\u003e\u003ccode\u003e4cb8ab8\u003c/code\u003e\u003c/a\u003e Fix resolver garbage collection during pending queries (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/e088cf48f6a30006e0545f8a4794210d3d99779f\"\u003e\u003ccode\u003ee088cf4\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to the CI (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/23dc7727637bedb972d91614ee73922ff84d4d1a\"\u003e\u003ccode\u003e23dc772\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/3a1bddf5dec8e79af7690d6caffec84746e096e4\"\u003e\u003ccode\u003e3a1bddf\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/b57721e1267c614f329eb36eb700ca2f1468446c\"\u003e\u003ccode\u003eb57721e\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.18.2 to 1.19.0 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/207\"\u003e#207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiodns/commit/ac6803818ad533749bedc9e11b691da0fe4bbe85\"\u003e\u003ccode\u003eac68038\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/saghul/aiodns/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/saghul/aiodns/compare/v3.2.0...v3.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp-retry` from 2.8.3 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/inyutin/aiohttp_retry/releases\"\u003eaiohttp-retry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests init file by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/106\"\u003einyutin/aiohttp_retry#106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the client sometimes would not retry by \u003ca href=\"https://github.com/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\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/Pandede\"\u003e\u003ccode\u003e@​Pandede\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/109\"\u003einyutin/aiohttp_retry#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRetry based on HTTP methods by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/103\"\u003einyutin/aiohttp_retry#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: _RequestContext._do_request() by \u003ca href=\"https://github.com/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ruff by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/99\"\u003einyutin/aiohttp_retry#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove code-coverage by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/100\"\u003einyutin/aiohttp_retry#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on python packages up to 3.13 by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/101\"\u003einyutin/aiohttp_retry#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo detected by codespell + add codespell workflow to avoid typos sneaking in by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove documentation a little bit by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/102\"\u003einyutin/aiohttp_retry#102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate ci dependencies by \u003ca href=\"https://github.com/inyutin\"\u003e\u003ccode\u003e@​inyutin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/104\"\u003einyutin/aiohttp_retry#104\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/FilippoBoido\"\u003e\u003ccode\u003e@​FilippoBoido\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/85\"\u003einyutin/aiohttp_retry#85\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/pull/89\"\u003einyutin/aiohttp_retry#89\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.0\"\u003ehttps://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.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/inyutin/aiohttp_retry/commit/39b23915023dde0e0298b822de3d23960a5024e6\"\u003e\u003ccode\u003e39b2391\u003c/code\u003e\u003c/a\u003e Fix the client sometimes would not retry (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/4b406631f39963d7cda97086e89da6c740c56a6d\"\u003e\u003ccode\u003e4b40663\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/106\"\u003e#106\u003c/a\u003e from inyutin/tests-init-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5007c9a469e46198cab7f7a1f944166ae82d045f\"\u003e\u003ccode\u003e5007c9a\u003c/code\u003e\u003c/a\u003e Add tests init file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/75dbda9057f5cc7fe2d44ce6b60018381b84a08b\"\u003e\u003ccode\u003e75dbda9\u003c/code\u003e\u003c/a\u003e Add workflow_dispatch to publish package CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/f402cf6e0d59992945ae7833b903a8aef5a114b3\"\u003e\u003ccode\u003ef402cf6\u003c/code\u003e\u003c/a\u003e Package version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/1dca2d92da43cc011175f4cbef2c64d7f166d111\"\u003e\u003ccode\u003e1dca2d9\u003c/code\u003e\u003c/a\u003e publish CI update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/5ea8c8eab3706617011b5ba7ff0a86cec5c4182a\"\u003e\u003ccode\u003e5ea8c8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/104\"\u003e#104\u003c/a\u003e from inyutin/dev-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/87c03ed64383710d05350ec0ce2110950fb327ab\"\u003e\u003ccode\u003e87c03ed\u003c/code\u003e\u003c/a\u003e Encode pytest asyncio setting in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/7af8295a7c99b1824c96f1a07f6cef1e1e64b4d7\"\u003e\u003ccode\u003e7af8295\u003c/code\u003e\u003c/a\u003e Update ci dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inyutin/aiohttp_retry/commit/723961d3c2e841da8232b2da92e354c70624310c\"\u003e\u003ccode\u003e723961d\u003c/code\u003e\u003c/a\u003e Retry based on HTTP methods (\u003ca href=\"https://redirect.github.com/inyutin/aiohttp_retry/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.75.0 to 0.79.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.79.0\u003c/h2\u003e\n\u003ch2\u003e0.79.0 (2026-02-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.78.0...v0.79.0\"\u003ev0.78.0...v0.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e enabling fast-mode in claude-opus-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5953ba7b425ba113595de570bc8c639ff4dc4047\"\u003e5953ba7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003epass speed parameter through in sync beta count_tokens (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1dd6119daca6de7a6eb730eb2494f368889ea050\"\u003e1dd6119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.78.0\u003c/h2\u003e\n\u003ch2\u003e0.78.0 (2026-02-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.1...v0.78.0\"\u003ev0.77.1...v0.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Release Claude Opus 4.6, adaptive thinking, and other features (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3ef1529b45c55645646cc6043784f999fda088de\"\u003e3ef1529\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.77.1\u003c/h2\u003e\n\u003ch2\u003e0.77.1 (2026-02-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.0...v0.77.1\"\u003ev0.77.0...v0.77.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estructured outputs:\u003c/strong\u003e send structured output beta header when format is omitted (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1158\"\u003e#1158\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/258494e2b814a6a096b01e50f83560b4cf4a98ad\"\u003e258494e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove claude-code-review workflow (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1338\"\u003e#1338\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/aec4512305e8dce41df8ef0ab225f4939e099bcf\"\u003eaec4512\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.77.0\u003c/h2\u003e\n\u003ch2\u003e0.77.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.76.0...v0.77.0\"\u003ev0.76.0...v0.77.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Structured Outputs in the Messages API (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ad5667774ad2e7efd181bcfda03fab3ea50630b9\"\u003ead56677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e migrate sending message format in output_config rather than output_format (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af405e473f7cf6091cb8e711264227b9b0508528\"\u003eaf405e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add custom JSON encoder for extended type support (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7780e90bd2fe4c1116d59bc0ad543aa609fc643d\"\u003e7780e90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse output_config for structured outputs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/82d669db652ed3d9aede61fd500fabb291b8f035\"\u003e82d669d\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/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.79.0 (2026-02-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.78.0...v0.79.0\"\u003ev0.78.0...v0.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e enabling fast-mode in claude-opus-4-6 (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5953ba7b425ba113595de570bc8c639ff4dc4047\"\u003e5953ba7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003epass speed parameter through in sync beta count_tokens (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1dd6119daca6de7a6eb730eb2494f368889ea050\"\u003e1dd6119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.78.0 (2026-02-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.1...v0.78.0\"\u003ev0.77.1...v0.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Release Claude Opus 4.6, adaptive thinking, and other features (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3ef1529b45c55645646cc6043784f999fda088de\"\u003e3ef1529\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.77.1 (2026-02-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.77.0...v0.77.1\"\u003ev0.77.0...v0.77.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estructured outputs:\u003c/strong\u003e send structured output beta header when format is omitted (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1158\"\u003e#1158\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/258494e2b814a6a096b01e50f83560b4cf4a98ad\"\u003e258494e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove claude-code-review workflow (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1338\"\u003e#1338\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/aec4512305e8dce41df8ef0ab225f4939e099bcf\"\u003eaec4512\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.77.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.76.0...v0.77.0\"\u003ev0.76.0...v0.77.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Structured Outputs in the Messages API (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ad5667774ad2e7efd181bcfda03fab3ea50630b9\"\u003ead56677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e migrate sending message format in output_config rather than output_format (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af405e473f7cf6091cb8e711264227b9b0508528\"\u003eaf405e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add custom JSON encoder for extended type support (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7780e90bd2fe4c1116d59bc0ad543aa609fc643d\"\u003e7780e90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse output_config for structured outputs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/82d669db652ed3d9aede61fd500fabb291b8f035\"\u003e82d669d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e run formatter (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/2e4ff86d7b8bef8fe5c4b7e62bf47dfff79f0577\"\u003e2e4ff86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove class causing breaking change (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1333\"\u003e#1333\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/81ee9533d14f9dc3753a4a1320ea744825b17e92\"\u003e81ee953\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/anthropics/anthropic-sdk-python/commit/cd1b39bf073c5482ed1c717f11147365eb68bbe9\"\u003e\u003ccode\u003ecd1b39b\u003c/code\u003e\u003c/a\u003e release: 0.79.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/fb52a6a09d09cde88913e36dadb03c335815d79a\"\u003e\u003ccode\u003efb52a6a\u003c/code\u003e\u003c/a\u003e fix: pass speed parameter through in sync beta count_tokens\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b7c2df239d1256ee358501a2cd89bfe9ea129abe\"\u003e\u003ccode\u003eb7c2df2\u003c/code\u003e\u003c/a\u003e feat(api): enabling fast-mode in claude-opus-4-6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7c42e4b04b170d88f39805b2b5956fa04a6e26d5\"\u003e\u003ccode\u003e7c42e4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1163\"\u003e#1163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f2b61ed11c36de713bdf6ec27cd502826965c882\"\u003e\u003ccode\u003ef2b61ed\u003c/code\u003e\u003c/a\u003e release: 0.78.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a4a29cab92c50bebc636bf97cd3177719a1cd8df\"\u003e\u003ccode\u003ea4a29ca\u003c/code\u003e\u003c/a\u003e feat(api): manual updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3955600d74eafef1eef5a66f460b54ed5deaf130\"\u003e\u003ccode\u003e3955600\u003c/code\u003e\u003c/a\u003e release: 0.77.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/eca8ddfb199a012ac8d5fd362757c4155afcb419\"\u003e\u003ccode\u003eeca8ddf\u003c/code\u003e\u003c/a\u003e fix(structured outputs): send structured output beta header when format is om...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ee44c52131650fb17ee618d20d17f792d5071230\"\u003e\u003ccode\u003eee44c52\u003c/code\u003e\u003c/a\u003e chore: remove claude-code-review workflow (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1338\"\u003e#1338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9c485f6966e10ae0ea9eabb3a921d2ea8145a25b\"\u003e\u003ccode\u003e9c485f6\u003c/code\u003e\u003c/a\u003e release: 0.77.0 (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1117\"\u003e#1117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.75.0...v0.79.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec` from 6.7.1 to 6.9.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec/blob/dev/CHANGELOG.rst\"\u003eapispec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.9.0 (2025-11-30)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eexamples\u003c/code\u003e property from field metadata (:pr:\u003ccode\u003e999\u003c/code\u003e).\nThanks :user:\u003ccode\u003eFlix6x\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 (:pr:\u003ccode\u003e998\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 (:pr:\u003ccode\u003e994\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.4 (2025-09-22)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eTimeDelta\u003c/code\u003e field type according to \u003ccode\u003eserialization_type\u003c/code\u003e (:pr:\u003ccode\u003e990\u003c/code\u003e).\nThanks :user:\u003ccode\u003eLewisHaley\u003c/code\u003e for the PR.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.3 (2025-09-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e to \u003ccode\u003eFalse\u003c/code\u003e if\n\u003ccode\u003eunknown\u003c/code\u003e is not set (:pr:\u003ccode\u003e988\u003c/code\u003e).\nThanks :user:\u003ccode\u003emwgamble\u003c/code\u003e for reporting.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e: set \u003ccode\u003eadditionalProperties\u003c/code\u003e according to \u003ccode\u003eunknown\u003c/code\u003e\nvalue passed at schema instantiation, not only as \u003ccode\u003eMeta\u003c/code\u003e attribute\n(:pr:\u003ccode\u003e988\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.2 (2025-05-12)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMarshmallowPlugin\u003c/code\u003e doesn't override \u003ccode\u003eadditionalProperties\u003c/code\u003e explicitly\npassed to \u003ccode\u003efields.Dict\u003c/code\u003e (:pr:\u003ccode\u003e976\u003c/code\u003e).\nThanks :user:\u003ccode\u003e0x0400\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerf improvement to \u003ccode\u003efilter_excluded_fields\u003c/code\u003e (:issue:\u003ccode\u003e972\u003c/code\u003e).\nThanks :user:\u003ccode\u003eallrob23\u003c/code\u003e for the PR.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.8.1 (2025-01-07)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\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/marshmallow-code/apispec/commit/58265d009f7cf027f22356a3fe9ea80813bcb36e\"\u003e\u003ccode\u003e58265d0\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/e25f2d4ab50855cfb9977dbbd167d1f67eae4f35\"\u003e\u003ccode\u003ee25f2d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/999\"\u003e#999\u003c/a\u003e from SeitaBV/feat/support-examples-property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/eab75c737746e46c9002f1d59b1fcd3c46f5855c\"\u003e\u003ccode\u003eeab75c7\u003c/code\u003e\u003c/a\u003e feat: add test of metadata examples field\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/3a620c64b7506374cf8094deb0d786ee221e95a9\"\u003e\u003ccode\u003e3a620c6\u003c/code\u003e\u003c/a\u003e chore: AUTHORS.rst entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/0349ca265eda89f8e633aa3b09b0a8348afb6d11\"\u003e\u003ccode\u003e0349ca2\u003c/code\u003e\u003c/a\u003e docs: thank myself (a bit presumptuous, don't I think)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/8f74aa5bed1d3e65d6917674d2475701df275a53\"\u003e\u003ccode\u003e8f74aa5\u003c/code\u003e\u003c/a\u003e docs: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/32f4f34a229674d274e17b50b57ffa4e9610df4c\"\u003e\u003ccode\u003e32f4f34\u003c/code\u003e\u003c/a\u003e docs: add changelog entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/867ae3b93254e822af1a18e83ebb6761aa07511b\"\u003e\u003ccode\u003e867ae3b\u003c/code\u003e\u003c/a\u003e feat: 'examples' is a supported property in OpenAPI 3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/40210699852a926c13a8d351e280c4a41070fc27\"\u003e\u003ccode\u003e4021069\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec/commit/c10c481ee4300056e07c134272d13c44a3283f90\"\u003e\u003ccode\u003ec10c481\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/marshmallow-code/apispec/issues/998\"\u003e#998\u003c/a\u003e from marshmallow-code/py314\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec/compare/6.7.1...6.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apispec-webframeworks` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/blob/main/CHANGELOG.rst\"\u003eapispec-webframeworks's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2024-09-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTornadoPlugin: Ensure consistent ordering for HTTP path keys\n(:pr:\u003ccode\u003e159\u003c/code\u003e). Thanks :user:\u003ccode\u003ebhperry\u003c/code\u003e for the PR.\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/marshmallow-code/apispec-webframeworks/commit/ebf43f149e685e3fe2abca2a1224b87e6c7415c1\"\u003e\u003ccode\u003eebf43f1\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/e26e46369626b225eb2776075e1ad116f18dc6b5\"\u003e\u003ccode\u003ee26e463\u003c/code\u003e\u003c/a\u003e Consistent ordering for HTTP path keys (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/abcb590d894572ab53865ad8f7d355f62c94cbf7\"\u003e\u003ccode\u003eabcb590\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/377fe6bd9aa8fc70d24dd65ef1d55016d8dd4fea\"\u003e\u003ccode\u003e377fe6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/bda9880a0d91692162ca87dcb30f35c404d9afbd\"\u003e\u003ccode\u003ebda9880\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/b5940fa3aa996eecce81dd536689aca3844c7580\"\u003e\u003ccode\u003eb5940fa\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/6c7f164bc58a9c647ecda3dd801bc75dab9f21d1\"\u003e\u003ccode\u003e6c7f164\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/154\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/7326a3f262caf41c3f64648cc231fdb9f6ac9d48\"\u003e\u003ccode\u003e7326a3f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/9da38826c861ea88f60f173e6f9bb212b522a22c\"\u003e\u003ccode\u003e9da3882\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/commit/1db8ed966be0e710a14e6518a86f6ce72981504f\"\u003e\u003ccode\u003e1db8ed9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/apispec-webframeworks/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/apispec-webframeworks/compare/1.1.0...1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.9.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0 (2025-11-19)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esync_to_async\u003c/code\u003e gains a \u003ccode\u003econtext\u003c/code\u003e parameter, similar to those for\n\u003ccode\u003easyncio.create_task\u003c/code\u003e, \u003ccode\u003eTaskGroup\u003c/code\u003e \u0026amp;co, that can be used on Python 3.11+ to\ncontrol the context used by the underlying task.\u003c/p\u003e\n\u003cp\u003eThe parent context is already propagated by default but the additional\ncontrol is useful if multiple \u003ccode\u003esync_to_async\u003c/code\u003e calls need to share the same\ncontext, e.g. when used with \u003ccode\u003easyncio.gather()\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.10.0 (2025-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded AsyncSingleThreadContext context manager to ensure multiple AsyncToSync\ninvocations use the same thread. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\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/django/asgiref/commit/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b7b15b20ddb51d1d8b6978165c0986686cd08c1d\"\u003e\u003ccode\u003eb7b15b2\u003c/code\u003e\u003c/a\u003e Releasing 3.11.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/901ee4f96db156f0b462690dd7c9f5aa99bcce03\"\u003e\u003ccode\u003e901ee4f\u003c/code\u003e\u003c/a\u003e Added a custom context parameter for the sync_to_async (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2138f0317d79cedd065571447ae0a7571989550e\"\u003e\u003ccode\u003e2138f03\u003c/code\u003e\u003c/a\u003e Fixed typo in test file comment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f587b122af17bdba5749c30b96d2237bc1c2dfdf\"\u003e\u003ccode\u003ef587b12\u003c/code\u003e\u003c/a\u003e Releasing 3.10.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b08087c3b6df811a0524585c4d4dafdc6b12c222\"\u003e\u003ccode\u003eb08087c\u003c/code\u003e\u003c/a\u003e Added AsyncSingleThreadContext (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/511\"\u003e#511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/asgiref/compare/3.9.2...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `authlib` from 1.6.5 to 1.6.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.6...v1.6.7\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSet supported algorithms for the default \u003ccode\u003ejwt\u003c/code\u003e instance.\u003c/p\u003e\n\u003ch2\u003ev1.6.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(ClientAuth): fix incorrect signature when Content-Type is x-www-form-urlencoded by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable by \u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter. by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/844\"\u003eauthlib/authlib#844\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/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/778\"\u003eauthlib/authlib#778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bendavis78\"\u003e\u003ccode\u003e@​bendavis78\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/842\"\u003eauthlib/authlib#842\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.5...v1.6.6\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/authlib/authlib/blob/main/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e.. meta::\n:description: The full list of changes between each Authlib release.\u003c/p\u003e\n\u003cp\u003eHere you can see the full list of changes between each Authlib release.\u003c/p\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eUnreleased\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eOpenID Connect RP-Initiated Logout 1.0 \u0026lt;https://openid.net/specs/openid-connect-rpinitiated-1_0.html\u0026gt;\u003c/code\u003e_.\nSee :ref:\u003ccode\u003especs/rpinitiated\u003c/code\u003e for details. :issue:\u003ccode\u003e500\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePer RFC 6749 Section 3.3, the \u003ccode\u003escope\u003c/code\u003e parameter is now optional at both\nauthorization and token endpoints. \u003ccode\u003eclient.get_allowed_scope()\u003c/code\u003e is called\nto determine the default scope when omitted. :issue:\u003ccode\u003e845\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9, start support Python 3.14. :pr:\u003ccode\u003e850\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eAuthorizationServerMetadata.validate()\u003c/code\u003e to compose with RFC extension classes.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at=0\u003c/code\u003e being incorrectly treated as \u003ccode\u003eNone\u003c/code\u003e. :issue:\u003ccode\u003e530\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eResourceProtector\u003c/code\u003e decorator to be used without parentheses. :issue:\u003ccode\u003e604\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUpgrade Guide: :ref:\u003ccode\u003ejoserfc_upgrade\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 1.6.6\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Dec 12, 2025\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_jwt_config\u003c/code\u003e takes a \u003ccode\u003eclient\u003c/code\u003e parameter, :pr:\u003ccode\u003e844\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix incorrect signature when \u003ccode\u003eContent-Type\u003c/code\u003e is x-www-form-urlencoded for OAuth 1.0 Client, :pr:\u003ccode\u003e778\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eexpires_in\u003c/code\u003e in \u003ccode\u003eOAuth2Token\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable, :pr:\u003ccode\u003e842\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAlways track \u003ccode\u003estate\u003c/code\u003e in session for OAuth client integrations.\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/authlib/authlib/commit/a769f343ae8d43236448e3e74445980861812e82\"\u003e\u003ccode\u003ea769f34\u003c/code\u003e\u003c/a\u003e chore: release 1.6.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/84f3fa2965a189c16528329e8cfe41d094008588\"\u003e\u003ccode\u003e84f3fa2\u003c/code\u003e\u003c/a\u003e fix: add EdDSA to default jwt algorithms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/38e872a3f5b97d2658507acc8762a4e18adaa50e\"\u003e\u003ccode\u003e38e872a\u003c/code\u003e\u003c/a\u003e chore: release 1.6.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b87c32ed07b8ae7f805873e1c9cafd1016761df7\"\u003e\u003ccode\u003eb87c32e\u003c/code\u003e\u003c/a\u003e fix: remove \u0026quot;none\u0026quot; algorithm from default jwt instance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/bb7a315befbad333faf9a23ef574d6e3134a6774\"\u003e\u003ccode\u003ebb7a315\u003c/code\u003e\u003c/a\u003e chore: release 1.6.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/0a423d4638bed1c0fe4597b2296a85c5bb59fba2\"\u003e\u003ccode\u003e0a423d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/844\"\u003e#844\u003c/a\u003e from azmeuk/806-get-jwt-config-client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/2808378611dd6fb2532b189a9087877d8f0c0489\"\u003e\u003ccode\u003e2808378\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/714502a4738bc29f26eb245b0c66718d8536cdda\"\u003e\u003ccode\u003e714502a\u003c/code\u003e\u003c/a\u003e feat: get_jwt_config takes a client parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/260d04edee23d8470057ea659c16fb8a2c7b0dc2\"\u003e\u003ccode\u003e260d04e\u003c/code\u003e\u003c/a\u003e Fix: Use \u003ccode\u003eexpires_in\u003c/code\u003e when \u003ccode\u003eexpires_at\u003c/code\u003e is unparsable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/eb37124bbbec6ccbfba3699d8960f9710d330ad8\"\u003e\u003ccode\u003eeb37124\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/778\"\u003e#778\u003c/a\u003e from shc261392/fix-httpx-oauth1-form-data-incorrect-s...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.5...v1.6.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\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/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/36d6f3c091d84dc547019d773ab6e63a1cbc23af\"\u003e\u003ccode\u003e36d6f3c\u003c/code\u003e\u003c/a\u003e Update tox tests for Python 3.10 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/da0d33816ba5c5f8f72a380720ad054596867807\"\u003e\u003ccode\u003eda0d338\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1341\"\u003e#1341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/649b9bdf87f4f9d850b29819b14b847bd3b8f970\"\u003e\u003ccode\u003e649b9bd\u003c/code\u003e\u003c/a\u003e Add check for hardcoded passwords in dicts. (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1338\"\u003e#1338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/3c56109061524f5907cc4d475b7370bac47a451b\"\u003e\u003ccode\u003e3c56109\u003c/code\u003e\u003c/a\u003e Fix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1337\"\u003e#1337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b790ce22f0a69f53468c1755e9d37e6349a2c8c2\"\u003e\u003ccode\u003eb790ce2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1335\"\u003e#1335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/0b73bbe59642097050d5c698e55d13bae2c6b78c\"\u003e\u003ccode\u003e0b73bbe\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.36.2 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/db81e4db6cf73690fde8fa22d0847ff17b06b23c\"\u003e\u003ccode\u003edb81e4d\u003c/code\u003e\u003c/a\u003e 1.38.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6b1d48e6ac6a9fb9361371b933a4eeca10aa3bc0\"\u003e\u003ccode\u003e6b1d48e\u003c/code\u003e\u003c/a\u003e fix: error message for pyright executable fallback (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1723\"\u003e#1723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/49a0041a6c5bf2c5f2bc759fbefa54a8f5d4da8f\"\u003e\u003ccode\u003e49a0041\u003c/code\u003e\u003c/a\u003e add more quick fixes for specific error types (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1721\"\u003e#1721\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eeca15f7aa21fbfa031370e0fd5c9d6934ba7df2\"\u003e\u003ccode\u003eeeca15f\u003c/code\u003e\u003c/a\u003e fix: don't comment out return types in stub generation (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1724\"\u003e#1724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ba43b2d33259b4b576e2929a700b052f31d55334\"\u003e\u003ccode\u003eba43b2d\u003c/code\u003e\u003c/a\u003e show the default value from the implementation signature when displaying an o...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ecea0a681818fc8b90a1314b7d2f844fef8f53c0\"\u003e\u003ccode\u003eecea0a6\u003c/code\u003e\u003c/a\u003e 1.37.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/df279750472a016fae05feaaa9d0824724ad00e4\"\u003e\u003ccode\u003edf27975\u003c/code\u003e\u003c/a\u003e update badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/176bfb108a17b6c5a61119c3ee3e2e5d6470c8ed\"\u003e\u003ccode\u003e176bfb1\u003c/code\u003e\u003c/a\u003e fix $schema being reported as unrecognized setting in config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/206627d635c13cda872dd665cc9dd67452707749\"\u003e\u003ccode\u003e206627d\u003c/code\u003e\u003c/a\u003e 1.37.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/039f3be9c6d959ccfd54133b5ab3b1159d6763f6\"\u003e\u003ccode\u003e039f3be\u003c/code\u003e\u003c/a\u003e extract the infinite recursion prevention logic into a separate class since t...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.36.2...v1.38.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.4 to 4.14.3\n\nUpdates `billiard` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks by \u003ca href=\"https://github.com/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/439\"\u003ecelery/billiard#439\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/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.3...v4.2.4\"\u003ehttps://github.com/celery/billiard/compare/v4.2.3...v4.2.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/436\"\u003ecelery/billiard#436\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/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.2...v4.2.3\"\u003ehttps://github.com/celery/billiard/compare/v4.2.2...v4.2.3\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/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.4 - 2025-11-30\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.3 - 2025-11-16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\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/celery/billiard/commit/69c2f296c2b36622a90c548f26c940712cb9a1df\"\u003e\u003ccode\u003e69c2f29\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/973c773fee4ccd1ab1151d0801905176b284075d\"\u003e\u003ccode\u003e973c773\u003c/code\u003e\u003c/a\u003e Eliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/51153949934c247ac23de990eee4073adcf08083\"\u003e\u003ccode\u003e5115394\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/437\"\u003e#437\u003c/a\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/GrayGhostDev/ToolboxAI-Solutions/pull/1511","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrayGhostDev%2FToolboxAI-Solutions/issues/1511","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1511/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-02-01T11:10:59.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"3881829355","node_id":"PR_kwDOJpUnI87AtFcc","number":122,"state":"closed","title":"Bump the poetry-dependencies group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-01T11:05:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-01T11:10:59.000Z","updated_at":"2026-03-01T11:05:23.000Z","time_to_close":2418862,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"poetry-dependencies","update_count":79,"packages":[{"name":"black","old_version":"25.9.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"coverage","old_version":"7.10.7","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"furo","old_version":"2025.9.25","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"mypy","old_version":"1.18.2","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.13.3","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"sphinx-click","old_version":"6.1.0","new_version":"6.2.0","repository_url":"https://github.com/click-contrib/sphinx-click"},{"name":"matplotlib","old_version":"3.10.6","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"deptry","old_version":"0.23.1","new_version":"0.24.0","repository_url":"https://github.com/fpgmaas/deptry"},{"name":"pyarrow","old_version":"21.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pandas-stubs","old_version":"2.3.2.250926","new_version":"2.3.3.260113","repository_url":"https://github.com/pandas-dev/pandas-stubs"},{"name":"anyio","old_version":"4.11.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"async-lru","old_version":"2.0.5","new_version":"2.1.0","repository_url":"https://github.com/aio-libs/async-lru"},{"name":"beautifulsoup4","old_version":"4.14.2","new_version":"4.14.3"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2025.10.5","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"charset-normalizer","old_version":"3.4.3","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.17","new_version":"1.8.20","repository_url":"https://github.com/microsoft/debugpy"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.19.1","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.60.1","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.16","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipykernel","old_version":"6.30.1","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"8.37.0","new_version":"8.38.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"json5","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jupyter-client","old_version":"8.6.3","new_version":"8.8.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"jupyter-server-terminals","old_version":"0.5.3","new_version":"0.5.4","repository_url":"https://github.com/jupyter-server/jupyter_server_terminals"},{"name":"jupyterlab","old_version":"4.4.9","new_version":"4.5.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-widgets","old_version":"3.0.15","new_version":"3.0.16","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"lark","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/lark-parser/lark"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mistune","old_version":"3.1.4","new_version":"3.2.0","repository_url":"https://github.com/lepture/mistune"},{"name":"nbclient","old_version":"0.10.2","new_version":"0.10.4","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbconvert","old_version":"7.16.6","new_version":"7.17.0","repository_url":"https://github.com/jupyter/nbconvert"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"numba","old_version":"0.62.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numexpr","old_version":"2.13.1","new_version":"2.14.1","repository_url":"https://github.com/pydata/numexpr"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"11.3.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"psutil","old_version":"7.1.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"roman-numerals-py","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"ruamel-yaml","old_version":"0.18.15","new_version":"0.19.1"},{"name":"send2trash","old_version":"1.8.3","new_version":"2.1.0","repository_url":"https://github.com/arsenetar/send2trash"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"},{"name":"soupsieve","old_version":"2.8","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.48.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"tornado","old_version":"6.5.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"types-pytz","old_version":"2025.2.0.20250809","new_version":"2025.2.0.20251108","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"20.34.0","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.5.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webcolors","old_version":"24.11.1","new_version":"25.10.0","repository_url":"https://github.com/ubernostrum/webcolors"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"widgetsnbextension","old_version":"4.0.14","new_version":"4.0.15"}],"path":null,"ecosystem":"pip"},"body":"Bumps the poetry-dependencies group with 75 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `25.9.0` | `26.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.13.2` |\n| [furo](https://github.com/pradyunsg/furo) | `2025.9.25` | `2025.12.19` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `1.19.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.13.3` | `0.14.14` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n| [sphinx-click](https://github.com/click-contrib/sphinx-click) | `6.1.0` | `6.2.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.6` | `3.10.8` |\n| [deptry](https://github.com/fpgmaas/deptry) | `0.23.1` | `0.24.0` |\n| [pyarrow](https://github.com/apache/arrow) | `21.0.0` | `23.0.0` |\n| [pandas-stubs](https://github.com/pandas-dev/pandas-stubs) | `2.3.2.250926` | `2.3.3.260113` |\n| [anyio](https://github.com/agronholm/anyio) | `4.11.0` | `4.12.1` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [async-lru](https://github.com/aio-libs/async-lru) | `2.0.5` | `2.1.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.2` | `4.14.3` |\n| [bleach](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.10.5` | `2026.1.4` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.3` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.3.0` | `8.3.1` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.17` | `1.8.20` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.19.1` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.1` | `4.61.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.16` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.30.1` | `7.1.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.37.0` | `8.38.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.7` | `8.1.8` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.12.1` | `0.13.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.6.3` | `8.8.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [jupyter-server-terminals](https://github.com/jupyter-server/jupyter_server_terminals) | `0.5.3` | `0.5.4` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.9` | `4.5.3` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.15` | `3.0.16` |\n| [lark](https://github.com/lark-parser/lark) | `1.3.0` | `1.3.1` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.1.4` | `3.2.0` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.2` | `0.10.4` |\n| [nbconvert](https://github.com/jupyter/nbconvert) | `7.16.6` | `7.17.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [numba](https://github.com/numba/numba) | `0.62.1` | `0.63.1` |\n| [numexpr](https://github.com/pydata/numexpr) | `2.13.1` | `2.14.1` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.3.0` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.5.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.24.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.1.0` | `7.2.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [roman-numerals-py](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| ruamel-yaml | `0.18.15` | `0.19.1` |\n| [send2trash](https://github.com/arsenetar/send2trash) | `1.8.3` | `2.1.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8` | `2.8.3` |\n| [starlette](https://github.com/Kludex/starlette) | `0.48.0` | `0.52.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.2` | `6.5.4` |\n| [types-pytz](https://github.com/typeshed-internal/stub_uploader) | `2025.2.0.20250809` | `2025.2.0.20251108` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.40.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.34.0` | `20.36.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.5.3` |\n| [webcolors](https://github.com/ubernostrum/webcolors) | `24.11.1` | `25.10.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.14` | `4.0.15` |\n\n\nUpdates `black` from 25.9.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \u003ccode\u003eas\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\nmatching subdirectories (like the previous behavior did), and not just matching root\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eIntroduces the 2026 stable style (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e), stabilizing the following changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealways_one_newline_after_import\u003c/code\u003e: Always force one blank line after import\nstatements, except when the line after the import is a comment or an import statement\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4489\"\u003e#4489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_fmt_skip_in_one_liners\u003c/code\u003e: Fix \u003ccode\u003e# fmt: skip\u003c/code\u003e behavior on one-liner declarations,\nsuch as \u003ccode\u003edef foo(): return \u0026quot;mock\u0026quot; # fmt: skip\u003c/code\u003e, where previously the declaration would\nhave been incorrectly collapsed (\u003ca href=\"https://redirect.github.com/psf/black/issues/4800\"\u003e#4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_module_docstring_detection\u003c/code\u003e: Fix module docstrings being treated as normal\nstrings if preceded by comments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4764\"\u003e#4764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efix_type_expansion_split\u003c/code\u003e: Fix type expansions split in generic functions (\u003ca href=\"https://redirect.github.com/psf/black/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emultiline_string_handling\u003c/code\u003e: Make expressions involving multiline strings more compact\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/1879\"\u003e#1879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enormalize_cr_newlines\u003c/code\u003e: Add \u003ccode\u003e\\r\u003c/code\u003e style newlines to the potential newlines to\nnormalize file newlines both from and to (\u003ca href=\"https://redirect.github.com/psf/black/issues/4710\"\u003e#4710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_around_except_types\u003c/code\u003e: Remove parentheses around multiple exception\ntypes in \u003ccode\u003eexcept\u003c/code\u003e and \u003ccode\u003eexcept*\u003c/code\u003e without \u003ccode\u003eas\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4720\"\u003e#4720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremove_parens_from_assignment_lhs\u003c/code\u003e: Remove unnecessary parentheses from the left-hand\nside of assignments while preserving magic trailing commas and intentional multiline\nformatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4865\"\u003e#4865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estandardize_type_comments\u003c/code\u003e: Format type comments which have zero or more spaces\nbetween \u003ccode\u003e#\u003c/code\u003e and \u003ccode\u003etype:\u003c/code\u003e or between \u003ccode\u003etype:\u003c/code\u003e and value to \u003ccode\u003e# type: (value)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following change was not in any previous stable release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegenerated the \u003ccode\u003e_width_table.py\u003c/code\u003e and added tests for the Khmer language (\u003ca href=\"https://redirect.github.com/psf/black/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release alo bumps \u003ccode\u003epathspec\u003c/code\u003e to v1 and fixes inconsistencies with Git's\n\u003ccode\u003e.gitignore\u003c/code\u003e logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e). Now, files will be ignored if a pattern matches them, even\nif the parent directory is directly unignored. For example, Black would previously\nformat \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e with this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eexclude/\n!exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, \u003ccode\u003eexclude/not_this/foo.py\u003c/code\u003e will remain ignored. To ensure \u003ccode\u003eexclude/not_this/\u003c/code\u003e and\nall of it's children are included in formatting (and in Git), use this \u003ccode\u003e.gitignore\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e*/exclude/*\n!*/exclude/not_this/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis new behavior matches Git. The leading \u003ccode\u003e*/\u003c/code\u003e are only necessary if you wish to ignore\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/psf/black/commit/6305bf1ae645ab7541be4f5028a86239316178eb\"\u003e\u003ccode\u003e6305bf1\u003c/code\u003e\u003c/a\u003e Prepare 2026.1.0 release (\u003ca href=\"https://redirect.github.com/psf/black/issues/4892\"\u003e#4892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e71305bee302f7f9016b228361e5ae69669dca7b\"\u003e\u003ccode\u003ee71305b\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 3.3.0 to 3.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4961\"\u003e#4961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/21a2a8c2b1d0c8d47bc00cc59591470f6a9e2307\"\u003e\u003ccode\u003e21a2a8c\u003c/code\u003e\u003c/a\u003e Fix Shutdown multiprocessing Manager in schedule_formatting (\u003ca href=\"https://redirect.github.com/psf/black/issues/4952\"\u003e#4952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/e3146cea4245fcee29d007cb45d9faaf63271586\"\u003e\u003ccode\u003ee3146ce\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4919\"\u003e#4919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/fe1fbc4fdfa03fa1d460f975b8aca77e4b4f1a4a\"\u003e\u003ccode\u003efe1fbc4\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4923\"\u003e#4923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b4b7fcfe00bb0d99322e07e87fc2f0992f7a4d8\"\u003e\u003ccode\u003e2b4b7fc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4922\"\u003e#4922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d745be69bfa9d85ec2ef6e5f9b7ec7e253b5e8ab\"\u003e\u003ccode\u003ed745be6\u003c/code\u003e\u003c/a\u003e docs: document --force-exclude for pre-commit workflows (\u003ca href=\"https://redirect.github.com/psf/black/issues/4957\"\u003e#4957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b41acd6ebbe76e18b49286166924f73f01c3fd02\"\u003e\u003ccode\u003eb41acd6\u003c/code\u003e\u003c/a\u003e Various CI and doc refactors (\u003ca href=\"https://redirect.github.com/psf/black/issues/4928\"\u003e#4928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6f43612766da4a2f275b575af0802c3e73b6ed83\"\u003e\u003ccode\u003e6f43612\u003c/code\u003e\u003c/a\u003e Handle pathspec v1 changes (\u003ca href=\"https://redirect.github.com/psf/black/issues/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/200c550aff44372f801a6d826a361cb26f45a504\"\u003e\u003ccode\u003e200c550\u003c/code\u003e\u003c/a\u003e Bump furo from 2025.9.25 to 2025.12.19 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4933\"\u003e#4933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/25.9.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.10.7 to 7.13.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\u003c/a\u003e\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/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.10.7...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `furo` from 2025.9.25 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\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\u003eSee full diff in \u003ca href=\"https://github.com/pradyunsg/furo/compare/2025.09.25...2025.12.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\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/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.3.0 to 4.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\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/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.1 - 2025-12-16\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: python\u003c/code\u003e with \u003ccode\u003erepo: local\u003c/code\u003e without \u003ccode\u003eadditional_dependencies\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\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/pre-commit/pre-commit/commit/8a0630ca1aa7f6d5665effe674ebe2022af17919\"\u003e\u003ccode\u003e8a0630c\u003c/code\u003e\u003c/a\u003e v4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fcbc745744377ef2c9fe6a7e1a21c67d797933dc\"\u003e\u003ccode\u003efcbc745\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3597\"\u003e#3597\u003c/a\u003e from pre-commit/empty-setup-py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/51592eececd13b99c40ec477ad8f810799147227\"\u003e\u003ccode\u003e51592ee\u003c/code\u003e\u003c/a\u003e fix python local template when artifact dirs are present\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/67e8faf80baffcb4b79c31b89ca9a413a1cd6776\"\u003e\u003ccode\u003e67e8faf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3596\"\u003e#3596\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c251e6b6d011b3b262339dc8e109de29b0ff8db1\"\u003e\u003ccode\u003ec251e6b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/98ccafa3ce42b846b9a9be9ed73fbbec7415496d\"\u003e\u003ccode\u003e98ccafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3593\"\u003e#3593\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/48953556d06f8cdb4248002c1a0044e69e0916b3\"\u003e\u003ccode\u003e4895355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2cedd58e691f4d3bc6ab266c7d7c28464c3502be\"\u003e\u003ccode\u003e2cedd58\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3588\"\u003e#3588\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/465192d7de58d569776eaaa818c94cb2b962d436\"\u003e\u003ccode\u003e465192d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/fd42f96874279c4f65363bfea5238714419e54d7\"\u003e\u003ccode\u003efd42f96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3586\"\u003e#3586\u003c/a\u003e from pre-commit/zipapp-sha256-file-not-needed\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.3.0...v4.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.13.3 to 0.14.14\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.14.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\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-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\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.14.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-01-22.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve required parentheses in lambda bodies (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22747\"\u003e#22747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCombine range suppression code diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22613\"\u003e#22613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Second positional argument to \u003ccode\u003eAsset\u003c/code\u003e/\u003ccode\u003eDataset\u003c/code\u003e should not be a dictionary (\u003ccode\u003eAIR303\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22453\"\u003e#22453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Detect duplicate entries in \u003ccode\u003e__all__\u003c/code\u003e (\u003ccode\u003eRUF068\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22114\"\u003e#22114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Allow shadowing non-builtin bindings (\u003ccode\u003eUP029\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22749\"\u003e#22749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pie\u003c/code\u003e] Detect duplicated declared class fields in \u003ccode\u003ePIE794\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22717\"\u003e#22717\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-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e, \u003ccode\u003e__enter__\u003c/code\u003e, \u003ccode\u003e__aenter__\u003c/code\u003e in \u003ccode\u003ePYI034\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22798\"\u003e#22798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Support \u003ccode\u003echeck\u003c/code\u003e parameter in \u003ccode\u003ePT011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22725\"\u003e#22725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add exception for \u003ccode\u003ectypes.Structure._fields_\u003c/code\u003e (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22559\"\u003e#22559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMany fixes are now marked unsafe if they would remove comments:\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22656\"\u003e\u003ccode\u003eB009\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22657\"\u003e\u003ccode\u003eB010\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22658\"\u003e\u003ccode\u003eB013\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22659\"\u003e\u003ccode\u003eB014\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22632\"\u003e\u003ccode\u003eB033\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22662\"\u003e\u003ccode\u003eSIM910\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22661\"\u003e\u003ccode\u003eSIM911\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22774\"\u003e\u003ccode\u003eUP039\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22773\"\u003e\u003ccode\u003eUP041\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22772\"\u003e\u003ccode\u003eUP045\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22767\"\u003e\u003ccode\u003eFURB105\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22681\"\u003e\u003ccode\u003eFURB116\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22680\"\u003e\u003ccode\u003eFURB136\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22679\"\u003e\u003ccode\u003eFURB140\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22670\"\u003e\u003ccode\u003eFURB145\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22669\"\u003e\u003ccode\u003eFURB154\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22668\"\u003e\u003ccode\u003eFURB157\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22667\"\u003e\u003ccode\u003eFURB164\u003c/code\u003e\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22666\"\u003e\u003ccode\u003eFURB181\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22665\"\u003e\u003ccode\u003eFURB188\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22663\"\u003e\u003ccode\u003eRUF019\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22664\"\u003e\u003ccode\u003eRUF020\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--exit-non-zero-on-format\u003c/code\u003e to formatter exit codes section (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22761\"\u003e#22761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eFastAPI\u003c/code\u003e] Document fix safety for \u003ccode\u003eFAST001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22655\"\u003e#22655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Tweak explanation to focus on latency/efficiency tradeoff (\u003ccode\u003eASYNC110\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22715\"\u003e#22715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Make example error out-of-the-box (\u003ccode\u003ePD002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22561\"\u003e#22561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB101\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22770\"\u003e#22770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Make the example work out of box (\u003ccode\u003eFURB103\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22769\"\u003e#22769\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/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/caiquejjx\"\u003e\u003ccode\u003e@​caiquejjx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sjyangkevin\"\u003e\u003ccode\u003e@​sjyangkevin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MeGaGiGaGon\"\u003e\u003ccode\u003e@​MeGaGiGaGon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leandrobbraga\"\u003e\u003ccode\u003e@​leandrobbraga\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8b2e7b36f246b990fe473a84eef25ff429e59ecf\"\u003e\u003ccode\u003e8b2e7b3\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22813\"\u003e#22813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4c7d1f50fd8d1baf06a3c8885ecd0ded0113d383\"\u003e\u003ccode\u003e4c7d1f5\u003c/code\u003e\u003c/a\u003e [ty] Infer \u003ccode\u003eTypedDict\u003c/code\u003e types with \u0026gt;=1 required key as being always truthy (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b7de4341535ff2b299695335e0a7b9ebaf297348\"\u003e\u003ccode\u003eb7de434\u003c/code\u003e\u003c/a\u003e add CCfW hooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22803\"\u003e#22803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b912dfc8788f8f8c351767899df6b72ce3366352\"\u003e\u003ccode\u003eb912dfc\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Apply \u003ccode\u003eUP045\u003c/code\u003e to string arguments of \u003ccode\u003etyping.cast\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22320\"\u003e#22320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1ff062d1cccb8025de184a55c6dfe469a4293249\"\u003e\u003ccode\u003e1ff062d\u003c/code\u003e\u003c/a\u003e [ty] Improve completion rankings for raise-from/except contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22775\"\u003e#22775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e408a51d24db2bca248bb90f2f7938f83efd22b\"\u003e\u003ccode\u003e7e408a5\u003c/code\u003e\u003c/a\u003e Update dependency wrangler to v4.59.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22793\"\u003e#22793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceb876b82300bd237d11e3eb77c46fcf3d3afe85\"\u003e\u003ccode\u003eceb876b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix inconsistent handling of forward references for \u003ccode\u003e__new__\u003c/code\u003e,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c5b4ee68c90faf0e609fa6553a171a7ba60ebdcb\"\u003e\u003ccode\u003ec5b4ee6\u003c/code\u003e\u003c/a\u003e [ty] Support solving generics involving PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22678\"\u003e#22678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b9a61293153f43df9963c727539309b76ac4756d\"\u003e\u003ccode\u003eb9a6129\u003c/code\u003e\u003c/a\u003e [ty] Improve support for kwarg splats in dictionary literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22781\"\u003e#22781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f516d47ceb7f6a0c3a95eaaa2c7451a32b5d7120\"\u003e\u003ccode\u003ef516d47\u003c/code\u003e\u003c/a\u003e Update contributing guide for adding a new rule (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22779\"\u003e#22779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.13.3...0.14.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\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.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\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/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\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/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\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/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-click` from 6.1.0 to 6.2.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/e8eb75e292ff6df69230420d992a34e68a7385d0\"\u003e\u003ccode\u003ee8eb75e\u003c/code\u003e\u003c/a\u003e add release notes with reno\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/46f6445bb67c76f2a4b638f4003862ee85dafba1\"\u003e\u003ccode\u003e46f6445\u003c/code\u003e\u003c/a\u003e fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/722f4217c1bf6dfd68f9e2c26aa52d590973b11e\"\u003e\u003ccode\u003e722f421\u003c/code\u003e\u003c/a\u003e print \u0026quot;Usage\u0026quot; before printing the command usage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/ebc38179a0229435becdd64026fa88be7ab2d60c\"\u003e\u003ccode\u003eebc3817\u003c/code\u003e\u003c/a\u003e Fix readthedocs build (redux)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/click-contrib/sphinx-click/commit/9ee09f9d3252fd6e8bce9578eca82411e89c76e5\"\u003e\u003ccode\u003e9ee09f9\u003c/code\u003e\u003c/a\u003e Fix readthedocs build\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/click-contrib/sphinx-click/compare/6.1.0...6.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.6 to 3.10.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\u003c/li\u003e\n\u003cli\u003eBetter error handling for MacOS backend\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\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/matplotlib/matplotlib/commit/1392cbe3c79cdb93f9282747841d648770f60249\"\u003e\u003ccode\u003e1392cbe\u003c/code\u003e\u003c/a\u003e REL: v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0b9ebb35f8310f22eb7f932b2ae14befb1f40b6f\"\u003e\u003ccode\u003e0b9ebb3\u003c/code\u003e\u003c/a\u003e Doc release prep v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bc7b5c4377ce2544e8936255c51c1ff7cd0c5a85\"\u003e\u003ccode\u003ebc7b5c4\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.7-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/86b38d3f29aa2af2ddcbd1895433117caa0fba47\"\u003e\u003ccode\u003e86b38d3\u003c/code\u003e\u003c/a\u003e Github stats v3.10.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9512188e42f9d221f83869113c44f99fe1832a0f\"\u003e\u003ccode\u003e9512188\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30717\"\u003e#30717\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30714-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d300769285e2c920804134e40ec83837eabe16d8\"\u003e\u003ccode\u003ed300769\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30714\"\u003e#30714\u003c/a\u003e: FIX: Gracefully handle numpy arrays as input to check_in_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/799bc9561daea5b5578f888817cb45c9321a0463\"\u003e\u003ccode\u003e799bc95\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30711\"\u003e#30711\u003c/a\u003e from ngoldbaum/v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/134000ba19a4354da2ad1084627039e05c936754\"\u003e\u003ccode\u003e134000b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30697\"\u003e#30697\u003c/a\u003e from ngoldbaum/fix-plotting-on-worker-threads\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5b8e219d70f1daa443330eb6a5a6211506b37362\"\u003e\u003ccode\u003e5b8e219\u003c/code\u003e\u003c/a\u003e TST: Run macosx backends in a subprocess\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/878e71a95006d3aec9505f3bd836968951fdd163\"\u003e\u003ccode\u003e878e71a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29810\"\u003e#29810\u003c/a\u003e: Declare free-threaded support in MacOS backend extension ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.6...v3.10.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `deptry` from 0.23.1 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fpgmaas/deptry/releases\"\u003edeptry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003ch4\u003ePython 3.9 support dropped\u003c/h4\u003e\n\u003cp\u003eSupport for Python 3.9 has been dropped, as it has reached its end of life.\u003c/p\u003e\n\u003ch4\u003ePyPy 3.10 support dropped, 3.11 added\u003c/h4\u003e\n\u003cp\u003eSupport for PyPy 3.10 has been dropped, since it is unsupported. We now only test against PyPy 3.11, and only publish wheels for this version.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd GitHub Actions annotations reporter (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1059\"\u003e#1059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support...\n\n_Description has been truncated_","html_url":"https://github.com/statisticsnorway/ssb-pre-system/pull/122","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/statisticsnorway%2Fssb-pre-system/issues/122","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/122/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-01-30T11:45:20.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"3875334461","node_id":"PR_kwDOD-YBes7AX-5u","number":42,"state":"open","title":"Bump iniconfig from 2.1.0 to 2.3.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-01-30T11:45:20.000Z","updated_at":"2026-01-30T11:45:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.1.0 to 2.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd IniConfig.parse() with inline comment stripping and Unicode whitespace handling by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/70\"\u003epytest-dev/iniconfig#70\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.2.0...v2.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.2.0\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\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/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eadd IniConfig.parse() classmethod with strip_inline_comments parameter (fixes \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/55\"\u003e#55\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eby default (strip_inline_comments=True), inline comments are properly stripped from values\u003c/li\u003e\n\u003cli\u003eset strip_inline_comments=False to preserve old behavior if needed\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIniConfig() constructor maintains backward compatibility (does not strip inline comments)\u003c/li\u003e\n\u003cli\u003eusers should migrate to IniConfig.parse() for correct comment handling\u003c/li\u003e\n\u003cli\u003eadd strip_section_whitespace parameter to IniConfig.parse() (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eopt-in parameter to strip Unicode whitespace from section names\u003c/li\u003e\n\u003cli\u003ewhen True, strips Unicode whitespace (U+00A0, U+2000, U+3000, etc.) from section names\u003c/li\u003e\n\u003cli\u003ewhen False (default), preserves existing behavior for backward compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eclarify Unicode whitespace handling (regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003esince iniconfig 2.0.0 (Python 3 only), all strings are Unicode by default\u003c/li\u003e\n\u003cli\u003ePython 3's str.strip() has handled Unicode whitespace since Python 3.0 (2008)\u003c/li\u003e\n\u003cli\u003einiconfig automatically benefits from this in all supported versions (Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003ekey names and values have Unicode whitespace properly stripped using Python's built-in methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.2.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 and 3.9 support (now requires Python \u0026gt;= 3.10)\u003c/li\u003e\n\u003cli\u003eadd Python 3.14 classifier\u003c/li\u003e\n\u003cli\u003emigrate from hatchling to setuptools 77 with setuptools_scm\u003c/li\u003e\n\u003cli\u003eadopt PEP 639 license specifiers and PEP 740 build attestations\u003c/li\u003e\n\u003cli\u003emigrate from black + pyupgrade to ruff\u003c/li\u003e\n\u003cli\u003emigrate CI to uv and unified test workflow\u003c/li\u003e\n\u003cli\u003eautomate GitHub releases and PyPI publishing via Trusted Publishing\u003c/li\u003e\n\u003cli\u003einclude tests in sdist\u003c/li\u003e\n\u003cli\u003emodernize code for Python 3.10+ (remove \u003cstrong\u003efuture\u003c/strong\u003e annotations, TYPE_CHECKING guards)\u003c/li\u003e\n\u003cli\u003erename _ParsedLine to ParsedLine\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/iniconfig/commit/7faed13ae50bad7c5da3f5782f254a8a7736bb84\"\u003e\u003ccode\u003e7faed13\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/70\"\u003e#70\u003c/a\u003e from RonnyPfannschmidt/comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58c08691bbb86aee8efbf73e37293dd6d65b68b4\"\u003e\u003ccode\u003e58c0869\u003c/code\u003e\u003c/a\u003e Refactor: Simplify IniConfig constructor and parse() method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/6d0af4529e4375e49dc871aa3d5ce17fe1791afe\"\u003e\u003ccode\u003e6d0af45\u003c/code\u003e\u003c/a\u003e Add strip_section_whitespace parameter to address issue \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/4\"\u003e#4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e2d89f5283cbeb4b4ca55fe88b1c353c343b4972\"\u003e\u003ccode\u003ee2d89f5\u003c/code\u003e\u003c/a\u003e Add IniConfig.parse() classmethod to fix inline comment handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/57b7ed9c7a5950f9c57b2cfbe641ff4cc04baf1c\"\u003e\u003ccode\u003e57b7ed9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/66\"\u003e#66\u003c/a\u003e from killiandesse/pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27ac49f56794db397ecb017414663a81e701dfdc\"\u003e\u003ccode\u003e27ac49f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/69\"\u003e#69\u003c/a\u003e from RonnyPfannschmidt/limit-attestation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3402322097aa7b6eba9a68c96faddc780e04b085\"\u003e\u003ccode\u003e3402322\u003c/code\u003e\u003c/a\u003e Disable build attestations for PRs from forks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/27e6a7b4a7b24f7f8a5e5492b071ab16eff36f95\"\u003e\u003ccode\u003e27e6a7b\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into pep639\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/65228817674f099d48cab0f0974000ea0e3031c1\"\u003e\u003ccode\u003e6522881\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/68\"\u003e#68\u003c/a\u003e from pytest-dev/fix-build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8b2bccb3b6be37c9bf70a4fbe0cda4c92c70355f\"\u003e\u003ccode\u003e8b2bccb\u003c/code\u003e\u003c/a\u003e Update CHANGELOG and automate releases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.1.0...v2.3.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=iniconfig\u0026package-manager=pip\u0026previous-version=2.1.0\u0026new-version=2.3.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 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/Maxim-Doronin/openvino/pull/42","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maxim-Doronin%2Fopenvino/issues/42","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-01-26T04:37:31.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"3854485334","node_id":"PR_kwDOMftbFc6_Sm3X","number":190,"state":"closed","title":"Bump the py-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-02T04:30:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T04:37:31.000Z","updated_at":"2026-02-02T04:30:53.000Z","time_to_close":604401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":83,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.24","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"moto","old_version":"5.1.4","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.31.1","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"myst-parser","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.2","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.24` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.34` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.34` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `23.0.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.34` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.34` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.20` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.14` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.31.1` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `4.0.1` | `5.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.2` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.52.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.24\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3af1873c23374171e0bc9a6891a361221178fd8d\"\u003e\u003ccode\u003e3af1873\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3db4f00603a7e7a76ffc0838593db9656e72799e\"\u003e\u003ccode\u003e3db4f00\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/2c19a9fcf0f35398a280868073b4170c02f4ef5a\"\u003e\u003ccode\u003e2c19a9f\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/80d79654015909384fe93f268867f5dec1e58705\"\u003e\u003ccode\u003e80d7965\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/75d1e11e5a5e06d8dcc5637ea26091874275eb99\"\u003e\u003ccode\u003e75d1e11\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/a220ab958493ad5a52289d964546d66538ee7711\"\u003e\u003ccode\u003ea220ab9\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c48c8ab1a19bdf5f8b3510e9948016443eb7d2e0\"\u003e\u003ccode\u003ec48c8ab\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/39e70dfeaa3a5dad7c8c49d08c64b79bc299c58c\"\u003e\u003ccode\u003e39e70df\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/094e6fa721d66f284e1466e758e32120b8594ab7\"\u003e\u003ccode\u003e094e6fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/4cd22ade79f67568ad66b6d406882dcd02a6fa6c\"\u003e\u003ccode\u003e4cd22ad\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;UNION\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26039\"\u003e#26039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly pin chrono (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26051\"\u003e#26051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't run rust doctests (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26046\"\u003e#26046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26042\"\u003e#26042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIgnore very slow test (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26041\"\u003e#26041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Voultapher\"\u003e\u003ccode\u003e@​Voultapher\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/wtn\"\u003e\u003ccode\u003e@​wtn\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\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/pola-rs/polars/commit/bb79993c3aa91d0db7d20be8f75c8075cad97067\"\u003e\u003ccode\u003ebb79993\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26078\"\u003e#26078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/26a9d097af5ea7d35f72bb8514ab990ddbce4796\"\u003e\u003ccode\u003e26a9d09\u003c/code\u003e\u003c/a\u003e chore: Mark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/451f247ba33506c9822478d0409a5075fec5797c\"\u003e\u003ccode\u003e451f247\u003c/code\u003e\u003c/a\u003e refactor(rust): Simplify \u003ccode\u003ePlPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26053\"\u003e#26053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b532aad910b0fe065b9fbe648944f3a580d3d104\"\u003e\u003ccode\u003eb532aad\u003c/code\u003e\u003c/a\u003e docs: Clarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/707796731ab7cf51f296a9b56a0231a5537e4259\"\u003e\u003ccode\u003e7077967\u003c/code\u003e\u003c/a\u003e fix: Optimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/44c139746390a0b81b3e908a8a6529cc6efdea1e\"\u003e\u003ccode\u003e44c1397\u003c/code\u003e\u003c/a\u003e fix: CPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/35ec39865a1952f60f46d17e461974881844b9c1\"\u003e\u003ccode\u003e35ec398\u003c/code\u003e\u003c/a\u003e chore: Update breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84fa66381626dbd826e2d5a663285fb193356d64\"\u003e\u003ccode\u003e84fa663\u003c/code\u003e\u003c/a\u003e fix(python): Propagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e9e20e468cb84f966eed1e37a7b23afaf842e88f\"\u003e\u003ccode\u003ee9e20e4\u003c/code\u003e\u003c/a\u003e fix: Fix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b0fdbd34d430d934bda9a4ca3f75e136223bd95b\"\u003e\u003ccode\u003eb0fdbd3\u003c/code\u003e\u003c/a\u003e chore: Fix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.1\"\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 `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\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\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9a285e6beab78c1f4c97047674ec09ac5451c4d1\"\u003e\u003ccode\u003e9a285e6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/29574158e22c3b2d6ca044eef1dc054d28d73485\"\u003e\u003ccode\u003e2957415\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8e1fd2e6e5c1fd6236cacf2dc9064d55d8baf07b\"\u003e\u003ccode\u003e8e1fd2e\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/9cadce52dae6e58e450a9ac0745a721dda8a4044\"\u003e\u003ccode\u003e9cadce5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ee24f15c3013be4f4c6e76bfbc948b910e6f8f35\"\u003e\u003ccode\u003eee24f15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b0f2cf318d9bef8eaf3f11cd81b22ce67810ea82\"\u003e\u003ccode\u003eb0f2cf3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6e690ed2966406d4b53532a44e70c93370368ae6\"\u003e\u003ccode\u003e6e690ed\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/b84ec5ebd8880b77e998bfdd28984f214c3f1fa3\"\u003e\u003ccode\u003eb84ec5e\u003c/code\u003e\u003c/a\u003e Add BOTOCORE_TCP_KEEPALIVE environment variable documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4705\"\u003e#4705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/36cebd34052db2fc7449b85ac04f903fb40f8b2f\"\u003e\u003ccode\u003e36cebd3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4d10440677e98c5c15fb6c84cc605bd7401fd74\"\u003e\u003ccode\u003ed4d1044\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.34\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d52e6ce4372810dc3a0d6701b366f54add0aedae\"\u003e\u003ccode\u003ed52e6ce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fce5268f1cd4063f30e3faec44da7efa309cae5f\"\u003e\u003ccode\u003efce5268\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/45e43f9baa8c57d13eb75d7566f1401366a1a188\"\u003e\u003ccode\u003e45e43f9\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b9ed58fa2f31170724538f6ed86e8cbf833de8fd\"\u003e\u003ccode\u003eb9ed58f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/48062d233b8173af5af60afb85443e04c6520146\"\u003e\u003ccode\u003e48062d2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8eb5ab6cd38ba8d94d938fac2e6086bd918760dc\"\u003e\u003ccode\u003e8eb5ab6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05b651e910c4b59a971a2566afb4b82a51fb00fc\"\u003e\u003ccode\u003e05b651e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/aba67690e5aa14f58083dfa168d7fc09681c884a\"\u003e\u003ccode\u003eaba6769\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3549e0136b656df25e985bdb85233f95da5851d3\"\u003e\u003ccode\u003e3549e01\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0847d5e023fd0f7d0e19a154ee22a46e8f56bc38\"\u003e\u003ccode\u003e0847d5e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\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.2 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\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\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.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.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.19 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 `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 `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `jmespath` from 1.0.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jmespath/jmespath.py/blob/develop/CHANGELOG.rst\"\u003ejmespath's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix concurrency issue with cache\n(\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12-3.14 (\u003ccode\u003epr [#331](https://github.com/jmespath/jmespath.py/issues/331) \u0026lt;https://github.com/jmespath/jmespath.py/pull/331\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.7-3.8 (\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\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/jmespath/jmespath.py/commit/6ff419a8b171d055a9bfc6904605bceb8b7a80ef\"\u003e\u003ccode\u003e6ff419a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.1.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/17e964f81911b49babb33e8697b34a31f869420f\"\u003e\u003ccode\u003e17e964f\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/5ce13aab582ba08b07e1c615feeb3654a7cd8d62\"\u003e\u003ccode\u003e5ce13aa\u003c/code\u003e\u003c/a\u003e Merge branch 'v1.1.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/d8f0457f8f962724b2c1ae12f79d3ba65edf4d82\"\u003e\u003ccode\u003ed8f0457\u003c/code\u003e\u003c/a\u003e Revert versions back to current version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/8cb30825f62675f6018b812faa9e2c9566eba2e3\"\u003e\u003ccode\u003e8cb3082\u003c/code\u003e\u003c/a\u003e 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6e379910c1bc0ec0339b05da73e32cad9d3dddbc\"\u003e\u003ccode\u003e6e37991\u003c/code\u003e\u003c/a\u003e Update permissions in codeql.yml workflow (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/141734d98ac79c165ec31aa1c18dd29efc45ac49\"\u003e\u003ccode\u003e141734d\u003c/code\u003e\u003c/a\u003e Bring .github settings up-to-date (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/07e30cf011056386c3dade2502a53eb2b1d4b3c1\"\u003e\u003ccode\u003e07e30cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/337\"\u003e#337\u003c/a\u003e from nateprewitt/python_changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/9170711017c2be9e3057a384e4a6061ef71bdc6f\"\u003e\u003ccode\u003e9170711\u003c/code\u003e\u003c/a\u003e Add missing changelog entries for Python support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/cdb9327fd597dda1aff703e6e5b98d79503c6f4e\"\u003e\u003ccode\u003ecdb9327\u003c/code\u003e\u003c/a\u003e Fix file encoding for Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jmespath/jmespath.py/compare/1.0.1...1.1.0\"\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 3.0.0 to 4.0.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.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 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/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.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/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 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/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table 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/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser 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/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter 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/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType 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/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group 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/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action 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/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact 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/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script 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/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims 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/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing 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/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov 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/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build 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/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs 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/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs 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/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme 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/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon 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/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build 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/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos 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/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\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/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.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\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/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.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/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak i...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/190/packages"}},{"old_version":"2.1.0","new_version":"2.3.0","update_type":"minor","path":null,"pr_created_at":"2026-01-25T22:13:17.000Z","version_change":"2.1.0 → 2.3.0","issue":{"uuid":"3853936727","node_id":"PR_kwDOEkpJIs6_Q62l","number":205,"state":"open","title":"Bump the dependencies group across 1 directory with 65 updates","user":"dependabot[bot]","labels":["skip-changelog","dependabot-deps-updates"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T22:13:17.000Z","updated_at":"2026-02-02T00:01:30.944Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":65,"packages":[{"name":"ansible-compat","old_version":"24.10.0","new_version":"25.12.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"argparse-manpage","old_version":"4.6","new_version":"4.7","repository_url":"https://github.com/praiskup/argparse-manpage"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"backrefs","old_version":"5.8","new_version":"6.1","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bracex","old_version":"2.5.post1","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"cachetools","old_version":"6.0.0","new_version":"6.2.5","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.6.15","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.9.1","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"45.0.4","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"griffe","old_version":"1.7.3","new_version":"1.15.0","repository_url":"https://github.com/mkdocstrings/griffe"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.7.0","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.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipython","old_version":"8.18.1","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"markdown","old_version":"3.8","new_version":"3.10.1","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":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mkdocs-autorefs","old_version":"1.4.2","new_version":"1.4.3","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"mkdocs-material","old_version":"9.6.14","new_version":"9.7.1","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocstrings","old_version":"0.29.1","new_version":"1.0.2","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"1.16.12","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/python"},{"name":"molecule","old_version":"6.0.3","new_version":"25.12.0","repository_url":"https://github.com/ansible-community/molecule"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"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.1","new_version":"7.0.3"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.15","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pyproject-api","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-plus","old_version":"0.7.0","new_version":"0.8.1","repository_url":"https://github.com/pytest-dev/pytest-plus"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"pytest-xdist","old_version":"3.7.0","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"setproctitle","old_version":"1.3.6","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcmatch","old_version":"10.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.3.5","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 65 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.10.0` | `25.12.0` |\n| [argparse-manpage](https://github.com/praiskup/argparse-manpage) | `4.6` | `4.7` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `5.8` | `6.1` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5.post1` | `2.6` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.0.0` | `6.2.5` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.4` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [griffe](https://github.com/mkdocstrings/griffe) | `1.7.3` | `1.15.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.7.0` | `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.1.0` | `2.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `9.9.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8` | `3.10.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.2` | `1.4.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.4.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.14` | `9.7.1` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `0.29.1` | `1.0.2` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.16.12` | `2.0.1` |\n| [molecule](https://github.com/ansible-community/molecule) | `6.0.3` | `25.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.1` | `7.0.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.15` | `10.20.1` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.9.1` | `1.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-plus](https://github.com/pytest-dev/pytest-plus) | `0.7.0` | `0.8.1` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.7.0` | `3.8.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.30.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.6` | `1.3.7` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `10.0` | `10.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.3.5` |\n\n\nUpdates `ansible-compat` from 24.10.0 to 25.12.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\u003ev25.12.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.11.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate sonar-project.properties configuration (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/536\"\u003e#536\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/537\"\u003e#537\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tell uv to use unreleased ansible-core when running with py314 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/535\"\u003e#535\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/534\"\u003e#534\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.2\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: add support for python 3.14 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/533\"\u003e#533\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove tox.ini and adopt pep-735 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/526\"\u003e#526\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\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/532\"\u003e#532\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: hooks update (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/531\"\u003e#531\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/530\"\u003e#530\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/529\"\u003e#529\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/527\"\u003e#527\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: configure renovate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/524\"\u003e#524\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update hooks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/525\"\u003e#525\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/515\"\u003e#515\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e behaviour for \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/520\"\u003e#520\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/507\"\u003e#507\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump markdown-exec from 1.10.3 to 1.11.0 in /.config in the dependencies group (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/506\"\u003e#506\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the dependencies group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/505\"\u003e#505\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\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/ansible/ansible-compat/commit/601b6905c7c7819efb1f2c820a853827b835ec4f\"\u003e\u003ccode\u003e601b690\u003c/code\u003e\u003c/a\u003e Add platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/f8de21d2a42ba53679a6baba96773249b5205174\"\u003e\u003ccode\u003ef8de21d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/bc972b8146943335a592600c59f1a03d3979cedf\"\u003e\u003ccode\u003ebc972b8\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/2a54adab4035b398a0bba671da981816cbf3b8f9\"\u003e\u003ccode\u003e2a54ada\u003c/code\u003e\u003c/a\u003e chore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/384ce35dbf27ca74b0f92b751b93c25633e2d8d4\"\u003e\u003ccode\u003e384ce35\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/4900c15e756d60c214fb059cf735f5d34770731c\"\u003e\u003ccode\u003e4900c15\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/523a99d720a809a346a55474fa1deaaaa78ef8da\"\u003e\u003ccode\u003e523a99d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/77ff6e6bab69662edc408d3fb4e1134c4ce69e81\"\u003e\u003ccode\u003e77ff6e6\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/44a2e5c015c003712b2aea4ee43dde012507c5b1\"\u003e\u003ccode\u003e44a2e5c\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/b4dc1bb2583c23ceb221f906fe3352c943cafd56\"\u003e\u003ccode\u003eb4dc1bb\u003c/code\u003e\u003c/a\u003e Add finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.10.0...v25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argparse-manpage` from 4.6 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/praiskup/argparse-manpage/releases\"\u003eargparse-manpage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eargparse-manpage v4.7\u003c/h2\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\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/praiskup/argparse-manpage/blob/main/NEWS\"\u003eargparse-manpage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cpre\u003e\u003ccode\u003e\nWARNING: The 'build_manpage' setup.py command will be removed v5\nWARNING: We'll drop the Python 2.7 support in v5\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.6\n\u003cul\u003e\n\u003cli\u003eFix the build against Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.5\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWe newly provide \u003ccode\u003ebuild_manpages.build_py\u003c/code\u003e and \u003ccode\u003ebuild_manpages.install\u003c/code\u003e\ncommand classes that are re-usable from \u003ccode\u003epyproject.toml\u003c/code\u003e.  No need to\nprovide \u003ccode\u003esetup.py\u003c/code\u003e because of \u003ccode\u003eargparse-manpage\u003c/code\u003e.  Solved issue#85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.4\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eprog=\u003c/code\u003e specifier (in setup.py/setup.cfg/pyproject.toml) is now\u003cbr /\u003e\nbetter handled so it doesn't conflict with ArgumentParser(prog=..).\u003cbr /\u003e\nFixes \u003ca href=\"https://redirect.github.com/praiskup/argparse-manpage/issues/79\"\u003epraiskup/argparse-manpage#79\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNews in v4.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe pyproject.toml parsing feature now depends on the python3-tomli library\u003cbr /\u003e\ninstead of python-toml for \u0026quot;python_environment \u0026gt;3, \u0026lt;=3.10\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pyproject.toml specification of manpages added.\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/praiskup/argparse-manpage/commit/7883becca340aa3ea124143e032848a7b2bdf84b\"\u003e\u003ccode\u003e7883bec\u003c/code\u003e\u003c/a\u003e Release v4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/765389ed4ee835c09451823d7fbfe22b0dc1674a\"\u003e\u003ccode\u003e765389e\u003c/code\u003e\u003c/a\u003e Move the SOURCE_DATE_EPOCH hack on one place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/a06ed9c1f03360f8089819c8e845cd670687eb64\"\u003e\u003ccode\u003ea06ed9c\u003c/code\u003e\u003c/a\u003e ci: fix RPM build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/c985432ee15824c43c75548c7ec1bd6f105a7f22\"\u003e\u003ccode\u003ec985432\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings for datetime and setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/306658941368ff0c2dfe2e4fa29b889fb5bbeb2b\"\u003e\u003ccode\u003e3066589\u003c/code\u003e\u003c/a\u003e ci: fedora-tox update list of environments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/b3a2c50e2abc47bd822d848864a80e35251a3147\"\u003e\u003ccode\u003eb3a2c50\u003c/code\u003e\u003c/a\u003e ci: enable ruff \u0026amp; bump deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/6dc54a5272e70b081af728958fd7554a6b0372f3\"\u003e\u003ccode\u003e6dc54a5\u003c/code\u003e\u003c/a\u003e Fix compatibility with newer setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/29f89bba536cf28f6ed66721367ff2ee3f6209b7\"\u003e\u003ccode\u003e29f89bb\u003c/code\u003e\u003c/a\u003e Fix some comments about sys.argv alteration for usage message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/ade76cc8ef49ec804955c6b4027dbae52d482034\"\u003e\u003ccode\u003eade76cc\u003c/code\u003e\u003c/a\u003e Use sys.stdout instead of /dev/stdout\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/praiskup/argparse-manpage/compare/v4.6...v4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.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 `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `backrefs` from 5.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Include Unicode 17 zip for early Python 3.15 usage, though Python 3.15 functionality is not guaranteed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues with regex imports in later versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a regression that created an ASCII binary property that would override the ASCII block property.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: POSIX character classes will now always use POSIX compatibility rules instead of Unicode standard rules,\nif any are specified in the Unicode specification. The affected character classes are: \u003ccode\u003e[[:alnum:]]\u003c/code\u003e, \u003ccode\u003e[[:digit:]]\u003c/code\u003e,\n\u003ccode\u003e[[:xdigit:]]\u003c/code\u003e, and  \u003ccode\u003e[[:punct:]]\u003c/code\u003e. To explicitly use standard Unicode rules for these compatibility properties, use\nthe Unicode property form instead: \u003ccode\u003e[\\p{Alnum}]\u003c/code\u003e, \u003ccode\u003e[\\p{Digit}]\u003c/code\u003e, \u003ccode\u003e[\\p{Punct}]\u003c/code\u003e, or \u003ccode\u003e[\\p{XDigit}]\u003c/code\u003e. This has changed\nto ensure no confusion for users expecting compatible POSIX style character class properties.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Scoped ASCII/Unicode flags (\u003ccode\u003e(?a:pattern)\u003c/code\u003e/\u003ccode\u003e(?u:pattern)\u003c/code\u003e) should be respected for Unicode properties in\n\u003ccode\u003ebre\u003c/code\u003e and will ensure ASCII or Unicode range if used.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues related to detecting disabled scoped flags.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eENHANCE\u003c/strong\u003e: Switch to deploying with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\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/backrefs/commit/da5453e08f49292b8cc2acab099816819de6c56e\"\u003e\u003ccode\u003eda5453e\u003c/code\u003e\u003c/a\u003e Remove build badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/30c281210b1dd417ccb7eb3f8e009acf49aad923\"\u003e\u003ccode\u003e30c2812\u003c/code\u003e\u003c/a\u003e Update docs to use zensical (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/e66f6c4ce60f847680e6c604ec17df6caad538cc\"\u003e\u003ccode\u003ee66f6c4\u003c/code\u003e\u003c/a\u003e Fix import of regex stuff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/12062282532c41f94fabff589c82db00b86def86\"\u003e\u003ccode\u003e1206228\u003c/code\u003e\u003c/a\u003e Include Unicode 17 zip for Python 3.15 early access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/23738f0d07dcc57c4ca863e412aef63be0060fe5\"\u003e\u003ccode\u003e23738f0\u003c/code\u003e\u003c/a\u003e Fix codec warning is Unicode download script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/63f8a4b14750828b7c1e385844fd36f6f89859e4\"\u003e\u003ccode\u003e63f8a4b\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7f4bf611e6e7fcc2aa4e0eba2872b5f51b7fc908\"\u003e\u003ccode\u003e7f4bf61\u003c/code\u003e\u003c/a\u003e Rework POSIX alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/956df5f387f1958110e5a7cf2a98d42a8309d9b6\"\u003e\u003ccode\u003e956df5f\u003c/code\u003e\u003c/a\u003e Fix ASCII block regression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7a948f083c3c87114a8dd87c95dff1893f3af82a\"\u003e\u003ccode\u003e7a948f0\u003c/code\u003e\u003c/a\u003e Clean up code and add more comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/9b2e406be36c1e0fc72651adbc7d2d63c4151483\"\u003e\u003ccode\u003e9b2e406\u003c/code\u003e\u003c/a\u003e Add more flag tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/5.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bracex` from 2.5.post1 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/bracex/releases\"\u003ebracex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6\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\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/bracex/commit/6d109c55372f0d5086adb7cf84a951cc06391a69\"\u003e\u003ccode\u003e6d109c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing and support for Python 3.14 (\u003ca href=\"https://redirect.github.com/facelessuser/bracex/issues/44\"\u003e#44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/c14d46fb495a8fdcd0ec51d4dd42aa587807407d\"\u003e\u003ccode\u003ec14d46f\u003c/code\u003e\u003c/a\u003e Add security policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/14645af4bf4de0e1abe4fd6c29bf98871f549273\"\u003e\u003ccode\u003e14645af\u003c/code\u003e\u003c/a\u003e Typos: remove duplicate words\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/bracex/compare/2.5.post1...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.0.0 to 6.2.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.2.5 (2026-01-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003elock\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd test cases for cache stampede scenarios.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.4 (2025-12-15)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix license information displayed on PyPI be using an updated\nversion of \u003ccode\u003etwine\u003c/code\u003e for uploading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.3 (2025-12-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003econdition\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor style and readability improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.2 (2025-11-13)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor improvements from GitHub Copilot code review.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.1 (2025-10-12)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ev6.2.0 (2025-08-25)\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/tkem/cachetools/commit/7158a30fa78b601f8d7958085bd2c0faaa045823\"\u003e\u003ccode\u003e7158a30\u003c/code\u003e\u003c/a\u003e Release v6.2.5.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9e3e267692980e99123506b63a156f999cd1278\"\u003e\u003ccode\u003ec9e3e26\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/379\"\u003e#379\u003c/a\u003e: Improve \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e example by using a lock.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/d99c023ad24c831638a321c0314f8ac24d23751f\"\u003e\u003ccode\u003ed99c023\u003c/code\u003e\u003c/a\u003e Bump copyright year.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/5a87ee037cfab209b0e9ad7c30bf6c9bdc2b3e97\"\u003e\u003ccode\u003e5a87ee0\u003c/code\u003e\u003c/a\u003e Add test cases for cache stampede scenarios.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/2e166d1348fe2e6e0e05aa68760687660034e6b6\"\u003e\u003ccode\u003e2e166d1\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9c9f9e5843f24580f957d29ce09bef214037896c\"\u003e\u003ccode\u003e9c9f9e5\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.5.1 to 5.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b8bec4af4a94a78306a2076384ccfd48b8c2e056\"\u003e\u003ccode\u003eb8bec4a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/345\"\u003e#345\u003c/a\u003e: Add GitHub pull request template.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9983ef8bd76758707ab9d197d4bd9fa47b4fb8bd\"\u003e\u003ccode\u003e9983ef8\u003c/code\u003e\u003c/a\u003e Bump version for uploading with updated twine.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9354683857b10b5e00cb93d06f7549ac8344fc0\"\u003e\u003ccode\u003ec935468\u003c/code\u003e\u003c/a\u003e Release v6.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/94d1099e6e79d34c436dc9f5d1cc039bcbf76738\"\u003e\u003ccode\u003e94d1099\u003c/code\u003e\u003c/a\u003e Prepare v6.2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.0.0...v6.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.6.15 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 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/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\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.2 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\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\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.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 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/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 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/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters\nthrough the context inside parameter callbacks. :issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3137\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is\nempty. :issue:\u003ccode\u003e3019\u003c/code\u003e :pr:\u003ccode\u003e3021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to\n\u003ccode\u003etype_cast_value\u003c/code\u003e. :issue:\u003ccode\u003e3069\u003c/code\u003e :pr:\u003ccode\u003e3090\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in \u003ccode\u003eCliRunner\u003c/code\u003e. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\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/click/commit/1d038f270701498433cb432f54db89f95f07a845\"\u003e\u003ccode\u003e1d038f2\u003c/code\u003e\u003c/a\u003e release version 8.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/03f3889f505d0c9ca4f9d6810f9e4ba2799f2a66\"\u003e\u003ccode\u003e03f3889\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3141\"\u003e#3141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3867781222cb63693ca67df94352d29d8e6e2770\"\u003e\u003ccode\u003e3867781\u003c/code\u003e\u003c/a\u003e Fix Ruff UP038 warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b91bb9548a5617b1197add95e084d569f57149c3\"\u003e\u003ccode\u003eb91bb95\u003c/code\u003e\u003c/a\u003e Provide altered context to callbacks to hide \u003ccode\u003eUNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/437e1e3295c7ec979fc1bf285bb402ca20d847e7\"\u003e\u003ccode\u003e437e1e3\u003c/code\u003e\u003c/a\u003e Temporarily provide a fake context to the callback to hide \u003ccode\u003eUNSET\u003c/code\u003e values as ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ea70da487b05d6bb758d472a3a9ffab4a5b7fcd5\"\u003e\u003ccode\u003eea70da4\u003c/code\u003e\u003c/a\u003e Don't test using a file in docs/ (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e27b307462b725722f620c69dd1d5509c032d18a\"\u003e\u003ccode\u003ee27b307\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003euv run --all-extras pyright --verifytypes click\u003c/code\u003e pass (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a92c573f3195c9da3058eadf1735d38af186d22c\"\u003e\u003ccode\u003ea92c573\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3129\"\u003e#3129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bd131e1ab63da2281d6dd9b8205ad2eb5a085468\"\u003e\u003ccode\u003ebd131e1\u003c/code\u003e\u003c/a\u003e Fix test_edit to work with BSD sed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0b5c6b75f617e6ee2f9f6dcd071b8a4bf183d1ed\"\u003e\u003ccode\u003e0b5c6b7\u003c/code\u003e\u003c/a\u003e Add Best practices section  (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.9.1 to 7.13.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.2 — 2026-01-25\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when Python is installed via symlinks, for example with Homebrew, the\nstandard library files could be incorrectly included in coverage reports.\nThis is now fixed, closing \u003ccode\u003eissue 2115\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: if a data file is created with no read permissions, the combine step\nwould fail completely. Now a warning is issued and the file is skipped.\nCloses \u003ccode\u003eissue 2117\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2115: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003ecoveragepy/coveragepy#2115\u003c/a\u003e\n.. _issue 2117: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2117\"\u003ecoveragepy/coveragepy#2117\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.1 — 2025-12-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: the JSON report now includes a \u003ccode\u003e\u0026quot;start_line\u0026quot;\u003c/code\u003e key for function and\nclass regions, indicating the first line of the region in the source. Closes\n\u003ccode\u003eissue 2110\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded: The \u003ccode\u003edebug data\u003c/code\u003e command now takes file names as arguments on the\ncommand line, so you can inspect specific data files without needing to set\nthe \u003ccode\u003eCOVERAGE_FILE\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the JSON report used to report module docstrings as executed lines,\nwhich no other report did, as described in \u003ccode\u003eissue 2105\u003c/code\u003e_. This is now fixed,\nthanks to Jianrong Zhao.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: coverage.py uses a more disciplined approach to detecting where\nthird-party code is installed, and avoids measuring it. This shouldn't change\nany behavior. If you find that it does, please get in touch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance: data files that will be combined now record their hash as part\nof the file name. This lets us skip duplicate data more quickly, speeding the\ncombining step.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDocs: added a section explaining more about what is considered a missing\nbranch and how it is reported: :ref:\u003ccode\u003ebranch_explain\u003c/code\u003e, as requested in \u003ccode\u003eissue 1597\u003c/code\u003e\u003cem\u003e. Thanks to \u003ccode\u003eAyisha Mohammed \u0026lt;pull 2092_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTests: the test suite misunderstood what core was being tested if\n\u003ccode\u003eCOVERAGE_CORE\u003c/code\u003e wasn't set on 3.14+. This is now fixed, closing \u003ccode\u003eissue 2109\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1597: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1597\"\u003ecoveragepy/coveragepy#1597\u003c/a\u003e\n.. _pull 2092: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2092\"\u003ecoveragepy/coveragepy#2092\u003c/a\u003e\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/coveragepy/coveragepy/commit/513e97162536cb94aeb94ed3cbe487ca64d13e07\"\u003e\u003ccode\u003e513e971\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27a8230cf0ef73abca824d2a8622235d9ad8ab96\"\u003e\u003ccode\u003e27a8230\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/27d8daac216ffef80276515b22cf679f9fabc422\"\u003e\u003ccode\u003e27d8daa\u003c/code\u003e\u003c/a\u003e refactor: plural does more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2f248cf095fc49d3599c39befdea6a5552ccd23\"\u003e\u003ccode\u003ea2f248c\u003c/code\u003e\u003c/a\u003e fix: stdlib might be through a symlink. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2115\"\u003e#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc52a22953759f71c291d31e7d17faf9903c0667\"\u003e\u003ccode\u003ebc52a22\u003c/code\u003e\u003c/a\u003e debug: re-organize Matchers to show more of what they do\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f338d816ba7fcd23934a9397d15450593f0f20d9\"\u003e\u003ccode\u003ef338d81\u003c/code\u003e\u003c/a\u003e debug: build is a tuple, don't show it on two lines\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92020e469ab6c80cbe24786d0250a571d5f569cf\"\u003e\u003ccode\u003e92020e4\u003c/code\u003e\u003c/a\u003e refactor(test): convert to parametrized\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6387d0a60d80cb96231ad32fe81be47cddfe1c78\"\u003e\u003ccode\u003e6387d0a\u003c/code\u003e\u003c/a\u003e test: let (most) tests run with no network\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1d31e33cfe0ccef7d87c1f0c6219f55a3d9b5eee\"\u003e\u003ccode\u003e1d31e33\u003c/code\u003e\u003c/a\u003e build: workflows sometimes need more than 10 min\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/62949782b7810d8ffc228ba0e00f81c2ab81cda7\"\u003e\u003ccode\u003e6294978\u003c/code\u003e\u003c/a\u003e refactor: an error message is now uniform across versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.9.1...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.4 to 46.0.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.4...46.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.9 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"...\n\n_Description has been truncated_","html_url":"https://github.com/pycontribs/subprocess-tee/pull/205","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pycontribs%2Fsubprocess-tee/issues/205","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/205/packages"}}]}