{"id":39818,"name":"mmh3","ecosystem":"pip","repository_url":"https://github.com/hajimes/mmh3","issues_count":38,"created_at":"2025-06-09T19:32:24.359Z","updated_at":"2025-06-09T19:32:24.359Z","purl":"pkg:pypi/mmh3","metadata":{"id":2804865,"name":"mmh3","ecosystem":"pypi","description":"Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions.","homepage":"https://pypi.org/project/mmh3/","licenses":"MIT License\n        \n        Copyright (c) 2011-2025 Hajime Senuma\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.","normalized_licenses":["Other"],"repository_url":"https://github.com/hajimes/mmh3","keywords_array":["utility","hash","MurmurHash"],"namespace":null,"versions_count":15,"first_release_published_at":"2011-06-07T14:17:38.000Z","latest_release_published_at":"2025-01-25T08:37:53.000Z","latest_release_number":"5.1.0","last_synced_at":"2025-06-09T17:30:33.688Z","created_at":"2022-04-10T11:37:39.073Z","updated_at":"2025-06-09T17:30:33.688Z","registry_url":"https://pypi.org/project/mmh3/","install_command":"pip install mmh3 --index-url https://pypi.org/simple","documentation_url":"https://mmh3.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Topic :: Software Development :: Libraries","Topic :: Utilities"],"normalized_name":"mmh3"},"repo_metadata":{"id":6875184,"uuid":"8124308","full_name":"hajimes/mmh3","owner":"hajimes","description":"Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions.","archived":false,"fork":false,"pushed_at":"2024-01-09T06:59:33.000Z","size":229,"stargazers_count":306,"open_issues_count":1,"forks_count":71,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-05-17T17:02:44.172Z","etag":null,"topics":["cpython","hash","murmurhash","murmurhash3","python"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/mmh3/","language":"C","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/hajimes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2013-02-10T15:48:12.000Z","updated_at":"2024-05-15T14:21:19.000Z","dependencies_parsed_at":"2023-01-13T14:08:39.096Z","dependency_job_id":"d1c293c5-ec6f-4273-b258-0f0cc6dc0e71","html_url":"https://github.com/hajimes/mmh3","commit_stats":{"total_commits":137,"total_committers":11,"mean_commits":"12.454545454545455","dds":0.0948905109489051,"last_synced_commit":"f05a429fe05ac3eb43898c5258a27e038b94598c"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hajimes","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217590197,"owners_count":16201269,"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":"hajimes","name":"Hajime Senuma","uuid":"1262041","kind":"user","description":"","email":"","website":null,"location":"Japan","twitter":null,"company":"University of Tokyo","icon_url":"https://avatars.githubusercontent.com/u/1262041?v=4","repositories_count":6,"last_synced_at":"2023-04-12T00:38:56.314Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/hajimes","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-04T21:35:42.782Z","updated_at":"2023-04-12T00:38:56.792Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hajimes","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hajimes/repositories"},"tags":[{"name":"v4.1.0","sha":"439dcff89d0a15af98c0460cf429003cce1a4db0","kind":"tag","published_at":"2024-01-09T06:59:14.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v4.1.0","html_url":"https://github.com/hajimes/mmh3/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v4.1.0/manifests"},{"name":"v4.0.1","sha":"3e62a197d85b483d8b51ad93943bb45ce2b17966","kind":"tag","published_at":"2023-07-14T16:16:56.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v4.0.1","html_url":"https://github.com/hajimes/mmh3/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"d5f5882cbf1b21c3b3b56de26b21466e1cd99591","kind":"tag","published_at":"2023-05-22T07:37:16.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v4.0.0","html_url":"https://github.com/hajimes/mmh3/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v4.0.0/manifests"},{"name":"v2.2","sha":"a36f24d60047eb23f1fefecd18b21bbe8624e712","kind":"tag","published_at":"2023-03-26T06:36:08.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.2","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.2/manifests"},{"name":"v3.1.0","sha":"ac8de99b4646ea260994c90bede1aa04a43f0b32","kind":"tag","published_at":"2023-03-24T14:12:57.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v3.1.0","html_url":"https://github.com/hajimes/mmh3/releases/tag/v3.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v3.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v3.1.0/manifests"},{"name":"v3.0.0","sha":"1496b8f20df5ad865e87ce9915ee077ca79f12e3","kind":"tag","published_at":"2021-02-23T14:14:46.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v3.0.0","html_url":"https://github.com/hajimes/mmh3/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v3.0.0/manifests"},{"name":"v2.5.1","sha":"a73b373858dedfdb6d362f5ca985ae1bb6bc2161","kind":"tag","published_at":"2017-10-31T13:13:01.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.5.1","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.5.1/manifests"},{"name":"v2.5","sha":"7be2f45657c78f9723124f63ae47794adcccdd7d","kind":"tag","published_at":"2017-10-28T14:41:18.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.5","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.5/manifests"},{"name":"v2.4","sha":"7dabd0da00fee241cb0ee144a73e414cedd607a9","kind":"tag","published_at":"2017-05-27T12:06:24.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.4","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.4/manifests"},{"name":"v2.3.2","sha":"490784f7a006500adae8fe081700870f394bed67","kind":"tag","published_at":"2017-05-26T09:52:03.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.3.2","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.3.2/manifests"},{"name":"v2.3.1","sha":"361a373b578d885cd95b1d299b6b63a7c8894a5c","kind":"tag","published_at":"2015-06-07T23:01:20.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.3.1","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.3.1/manifests"},{"name":"v2.3","sha":"7b9a6455038e4174a87ad623fb22412808e25b79","kind":"tag","published_at":"2013-12-08T16:24:21.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.3","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.3/manifests"},{"name":"v2.1","sha":"74cf94b9638909da77ad827b40a048f70f96b045","kind":"tag","published_at":"2013-02-25T16:03:19.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.1","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.1/manifests"},{"name":"v2.0","sha":"c1b7f1effb6ba1547edda3ec2d1a5034ce7e38c2","kind":"tag","published_at":"2013-02-10T15:49:52.000Z","download_url":"https://codeload.github.com/hajimes/mmh3/tar.gz/v2.0","html_url":"https://github.com/hajimes/mmh3/releases/tag/v2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hajimes%2Fmmh3/tags/v2.0/manifests"}]},"repo_metadata_updated_at":"2024-09-07T12:38:55.537Z","dependent_packages_count":152,"downloads":12147353,"downloads_period":"last-month","dependent_repos_count":1823,"rankings":{"downloads":0.1967047514950153,"dependent_repos_count":0.26358831293614887,"dependent_packages_count":0.19672998070191364,"stargazers_count":3.724171688084585,"forks_count":5.169181464042278,"docker_downloads_count":0.528777830412127,"average":1.6798590046120114},"purl":"pkg:pypi/mmh3","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/mmh3","docker_dependents_count":164,"docker_downloads_count":257066770,"usage_url":"https://repos.ecosyste.ms/usage/pypi/mmh3","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/mmh3/dependencies","status":null,"funding_links":[],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/mmh3/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/mmh3/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/mmh3/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/mmh3/related_packages","maintainers":[{"uuid":"Hajime.Senuma","login":"Hajime.Senuma","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/Hajime.Senuma/","role":null,"created_at":"2023-02-15T08:46:58.898Z","updated_at":"2023-02-15T08:46:58.898Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/Hajime.Senuma/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":691722,"maintainers_count":293429,"namespaces_count":0,"keywords_count":229052,"github":"pypi","metadata":{"funded_packages_count":49048},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-10T05:59:11.825Z","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":16,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"4654019322","node_id":"PR_kwDORYPRfc7l_554","number":128,"state":"closed","title":"chore(deps): update mmh3 requirement from \u003e=4.1.0 to \u003e=5.2.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-13T02:59:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-13T02:44:01.000Z","updated_at":"2026-06-13T02:59:59.000Z","time_to_close":956,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"mmh3","old_version":"\u003e=4.1.0","new_version":"\u003e=5.2.1","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [mmh3](https://github.com/hajimes/mmh3) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.1] - 2026-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.1.0] - 2025-01-25\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove the performance of \u003ccode\u003ehash128()\u003c/code\u003e, \u003ccode\u003ehash64()\u003c/code\u003e, and \u003ccode\u003ehash_bytes()\u003c/code\u003e by\nusing\n\u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e,\nreducing the overhead of function calls\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/116\"\u003e#116\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd the software paper for this library\n(\u003ca href=\"https://doi.org/10.21105/joss.06124\"\u003edoi:10.21105/joss.06124\u003c/a\u003e), following\nits publication in the\n\u003ca href=\"https://joss.theoj.org\"\u003e\u003cem\u003eJournal of Open Source Software\u003c/em\u003e\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8, as it has reached the end of life on 2024-10-07\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/117\"\u003e#117\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.0.1] - 2024-09-22\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the issue that the package cannot be built from the source distribution\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/90\"\u003e#90\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/hajimes/mmh3/commit/a4c44d81a8dc433ac50977425d7a5cf27cea9f0c\"\u003e\u003ccode\u003ea4c44d8\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 5.2.1 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c83701d471d557594ab7f8003c13a476057fa7b1\"\u003e\u003ccode\u003ec83701d\u003c/code\u003e\u003c/a\u003e ci: update workflow files (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/d4311b2d97b0f965aec857d94fa19aa0cd70ef8a\"\u003e\u003ccode\u003ed4311b2\u003c/code\u003e\u003c/a\u003e style: migrate to Ruff (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/25f98341e1ed5b5de9f1c7c28d67265501506281\"\u003e\u003ccode\u003e25f9834\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c4079917eadce86025724913e0cb620948e1199f\"\u003e\u003ccode\u003ec407991\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/ee3a78a1fe3f82c7e2018f290d6ab262603d24dd\"\u003e\u003ccode\u003eee3a78a\u003c/code\u003e\u003c/a\u003e ci: update wheel configs (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/60957d75f0c30cf25d1f5354f5a5ac0febd952e3\"\u003e\u003ccode\u003e60957d7\u003c/code\u003e\u003c/a\u003e fix: modify sed commands for cross-platform builds (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/da3bb5f0aa7a004b2ae3a5d0eb3d06c05f370130\"\u003e\u003ccode\u003eda3bb5f\u003c/code\u003e\u003c/a\u003e Switch back to workflow_dispatch for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/bdaedf92e861df6eab2e3b229ce92fc688fa8f79\"\u003e\u003ccode\u003ebdaedf9\u003c/code\u003e\u003c/a\u003e Bump pyperf in the dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/3342d17e5315fb9935f9348824c5b7acbc0b4808\"\u003e\u003ccode\u003e3342d17\u003c/code\u003e\u003c/a\u003e Bump dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v4.1.0...v5.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/iimp0ster/detection-chokepoints/pull/128","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/iimp0ster%2Fdetection-chokepoints/issues/128","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/128/packages"},{"uuid":"4371672608","node_id":"PR_kwDOSAA7jM7XxBFd","number":5,"state":"open","title":"deps: bump mmh3 from 4.1.0 to 5.2.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-05-03T11:42:31.000Z","updated_at":"2026-05-03T11:42:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"mmh3","old_version":"4.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"Bumps [mmh3](https://github.com/hajimes/mmh3) from 4.1.0 to 5.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove the performance of \u003ccode\u003ehash128()\u003c/code\u003e, \u003ccode\u003ehash64()\u003c/code\u003e, and \u003ccode\u003ehash_bytes()\u003c/code\u003e by using \u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e, reducing the overhead of function calls (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/116\"\u003e#116\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd the software paper for this library (\u003ca href=\"https://doi.org/10.21105/joss.06124\"\u003edoi:10.21105/joss.06124\u003c/a\u003e), following its publication in the \u003ca href=\"https://joss.theoj.org\"\u003e\u003cem\u003eJournal of Open Source Software\u003c/em\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8, as it has reached the end of life on 2024-10-07 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/117\"\u003e#117\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/drvinceknight\"\u003e\u003ccode\u003e@​drvinceknight\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/113\"\u003ehajimes/mmh3#113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielskatz\"\u003e\u003ccode\u003e@​danielskatz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/114\"\u003ehajimes/mmh3#114\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.0.1...v5.1.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.0.1...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue with not building from sdist by \u003ca href=\"https://github.com/hajimes\"\u003e\u003ccode\u003e@​hajimes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/91\"\u003ehajimes/mmh3#91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.0.0...v5.0.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.0.0...v5.0.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e(Re-release to trigger Zenodo)\u003c/p\u003e\n\u003ch2\u003ev5.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 4 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/57\"\u003ehajimes/mmh3#57\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4.0.0 to 4.3.6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/58\"\u003ehajimes/mmh3#58\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4.1.0 to 4.1.8 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/59\"\u003ehajimes/mmh3#59\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/cibuildwheel from 2.16.2 to 2.20.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/60\"\u003ehajimes/mmh3#60\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.1.0] - 2025-01-25\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove the performance of \u003ccode\u003ehash128()\u003c/code\u003e, \u003ccode\u003ehash64()\u003c/code\u003e, and \u003ccode\u003ehash_bytes()\u003c/code\u003e by\nusing\n\u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e,\nreducing the overhead of function calls\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/116\"\u003e#116\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd the software paper for this library\n(\u003ca href=\"https://doi.org/10.21105/joss.06124\"\u003edoi:10.21105/joss.06124\u003c/a\u003e), following\nits publication in the\n\u003ca href=\"https://joss.theoj.org\"\u003e\u003cem\u003eJournal of Open Source Software\u003c/em\u003e\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8, as it has reached the end of life on 2024-10-07\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/117\"\u003e#117\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.0.1] - 2024-09-22\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the issue that the package cannot be built from the source distribution\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/90\"\u003e#90\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.0.0] - 2024-09-18\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eImprove the performance of the \u003ccode\u003ehash()\u003c/code\u003e function with\n\u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e,\nreducing the overhead of function calls. For data sizes between 1–2 KB\n(e.g., 48x48 favicons), performance is 10%–20% faster. For smaller data\n(~500 bytes, like 16x16 favicons), performance increases by approximately 30%\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/1a7ebcedb94e12ce95c814eb4579bbed29691a63\"\u003e\u003ccode\u003e1a7ebce\u003c/code\u003e\u003c/a\u003e Bump version to 5.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c826f6e632a1b170c472f7fe91b7cf5a6dc55ab1\"\u003e\u003ccode\u003ec826f6e\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/120\"\u003e#120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v4.1.0...v5.2.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=mmh3\u0026package-manager=pip\u0026previous-version=4.1.0\u0026new-version=5.2.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/quonfig/sdk-python/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/quonfig%2Fsdk-python/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"},{"uuid":"4333145766","node_id":"PR_kwDOQguR2c7V04_h","number":11,"state":"closed","title":"chore(deps): bump the python-minor-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T04:47:54.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T04:45:26.000Z","updated_at":"2026-05-11T04:47:55.000Z","time_to_close":1209748,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":43,"packages":[{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"ecdsa","old_version":"0.19.1","new_version":"0.19.2","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fsspec","old_version":"2026.1.0","new_version":"2026.4.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jiter","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"lxml","old_version":"6.0.2","new_version":"6.1.0","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.2.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"nltk","old_version":"3.9.2","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"openai","old_version":"2.16.0","new_version":"2.33.0","repository_url":"https://github.com/openai/openai-python"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"12.1.0","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"postgrest","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"psycopg-binary","old_version":"3.3.2","new_version":"3.3.4","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.46.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyiceberg","old_version":"0.10.0","new_version":"0.11.1","repository_url":"https://github.com/apache/iceberg-python"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pypdfium2","old_version":"5.3.0","new_version":"5.7.1","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"pyroaring","old_version":"1.0.3","new_version":"1.1.0","repository_url":"https://github.com/Ezibenroc/PyRoaringBitMap"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"realtime","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"reportlab","old_version":"4.4.9","new_version":"4.5.0"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"storage3","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-auth","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-functions","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"textblob","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"yarl","old_version":"1.22.0","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 43 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.1` | `0.19.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.1.0` | `2026.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.14.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.2` | `6.1.0` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.2.1` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.2` | `3.9.4` |\n| [openai](https://github.com/openai/openai-python) | `2.16.0` | `2.33.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.2.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.2` | `3.3.4` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.3` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.14.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.46.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyiceberg](https://github.com/apache/iceberg-python) | `0.10.0` | `0.11.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.12.1` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.3.0` | `5.7.1` |\n| [pyroaring](https://github.com/Ezibenroc/PyRoaringBitMap) | `1.0.3` | `1.1.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.27` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.4.4` |\n| [reportlab](https://www.reportlab.com/) | `4.4.9` | `4.5.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [storage3](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [supabase-auth](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [supabase-functions](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.19.0` | `0.20.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.46.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.23.0` |\n\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 `certifi` from 2026.1.4 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/2026.01.04...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.4 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...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.3.1 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.3.1...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ecdsa` from 0.19.1 to 0.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/releases\"\u003eecdsa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.2\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to use newer version of Ubuntu.\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/tlsfuzzer/python-ecdsa/blob/master/NEWS\"\u003eecdsa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eRelease 0.19.2 (26 Mar 2026)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI to use newer version of Ubuntu.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.1 (13 Mar 2025)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eder.remove_implitic\u003c/code\u003e and \u003ccode\u003eder.encode_implicit\u003c/code\u003e for decoding and\nencoding DER IMPLICIT values with custom tag values and arbitrary\nclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMinor fixes around arithmetic with curves that have non-prime order\n(useful for experimentation, not practical deployments)\u003c/li\u003e\n\u003cli\u003eFix arithmetic to work with curves that have (0, 0) on the curve\u003c/li\u003e\n\u003cli\u003eFix canonicalization of signatures when \u003ccode\u003es\u003c/code\u003e is just slightly\nabove half of curve order\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped official support for Python 3.5 (again, issues with CI, support\nfor Python 2.6 and Python 2.7 is unchanged)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOfficialy support Python 3.12 and 3.13 (add them to CI)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoval of few more unnecessary \u003ccode\u003esix.b\u003c/code\u003e literals (Alexandre Detiste)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix typos in warning messages\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.0 (08 Apr 2024)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eto_ssh\u003c/code\u003e in \u003ccode\u003eVerifyingKey\u003c/code\u003e and \u003ccode\u003eSigningKey\u003c/code\u003e, supports Ed25519 keys only\n(Pablo Mazzini)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for twisted Brainpool curves\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDoc fix:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix curve equation in glossary\u003c/li\u003e\n\u003cli\u003eDocumentation for signature encoding and signature decoding functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped official support for 3.3 and 3.4 (because of problems running them\nin CI, not because it's actually incompatible; support for 2.6 and 2.7 is\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/tlsfuzzer/python-ecdsa/commit/bd66899550d7185939bf27b75713a2ac9325a9d3\"\u003e\u003ccode\u003ebd66899\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/9c046ee7f61649a8a43d3f6f9c64f13e76e148db\"\u003e\u003ccode\u003e9c046ee\u003c/code\u003e\u003c/a\u003e tests: reject truncated DER lengths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/acc40fdaf7bb09aafc912a687ca6ed063ecaface\"\u003e\u003ccode\u003eacc40fd\u003c/code\u003e\u003c/a\u003e der: reject truncated lengths in octet/implicit/constructed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/55aca7830c41af8d6b66ce2ba71fb9aac35085ec\"\u003e\u003ccode\u003e55aca78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tlsfuzzer/python-ecdsa/issues/363\"\u003e#363\u003c/a\u003e from gstarovo/ubuntu20-deprecation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/c4f0df174ad3ae75e59f4e9f47d4a912f5fe21cf\"\u003e\u003ccode\u003ec4f0df1\u003c/code\u003e\u003c/a\u003e chore: change to ubuntu-22 since u-20 is deprecated\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/compare/python-ecdsa-0.19.1...python-ecdsa-0.19.2\"\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 `fsspec` from 2026.1.0 to 2026.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/8fdedd1fd17be354f75f0cec1f973d93416c704b\"\u003e\u003ccode\u003e8fdedd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/fsspec/filesystem_spec\"\u003ehttps://github.com/fsspec/filesystem_spec\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/8205d0d1afecb64f34565ebeb073b7f1959a869d\"\u003e\u003ccode\u003e8205d0d\u003c/code\u003e\u003c/a\u003e Release (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2027\"\u003e#2027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/50bfba22200077fa602038857e19d58cc2541db5\"\u003e\u003ccode\u003e50bfba2\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/fsspec/filesystem_spec\"\u003ehttps://github.com/fsspec/filesystem_spec\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/f58bc851213ab3a87b2d26c01c9d26b291b0e1d3\"\u003e\u003ccode\u003ef58bc85\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;DEP: de-duplicate and sort optional dependencies (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2021\"\u003e#2021\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2026\"\u003e#2026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/c6c7b40b7794c6e554d9dcae7bf4930bba67e403\"\u003e\u003ccode\u003ec6c7b40\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;DEP: de-duplicate and sort optional dependencies (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2021\"\u003e#2021\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/3bc67f85c3b67c5adef11af35761fd839de306fb\"\u003e\u003ccode\u003e3bc67f8\u003c/code\u003e\u003c/a\u003e DEP: de-duplicate and sort optional dependencies (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/0b290bf1336bb15d4327afcdf743d9a17b5ea762\"\u003e\u003ccode\u003e0b290bf\u003c/code\u003e\u003c/a\u003e docs: add URL handling note to HTTPFileSystem class docstring (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/b33a2d6c3b6912c645d9a315791f41e74bff4c66\"\u003e\u003ccode\u003eb33a2d6\u003c/code\u003e\u003c/a\u003e ci: install downstream systems like gcsfs before testing so the \u003ccode\u003e_version.py\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/e9e7a5b5eab42b6c6d0790aa0aa510f66fc44630\"\u003e\u003ccode\u003ee9e7a5b\u003c/code\u003e\u003c/a\u003e Delegate DirFileSystem delete and write_text (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2022\"\u003e#2022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/105d614a443e3f46236deb87442cc5491741687c\"\u003e\u003ccode\u003e105d614\u003c/code\u003e\u003c/a\u003e fix: use encode_url() in _pipe_file for consistency (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2023\"\u003e#2023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fsspec/filesystem_spec/compare/2026.1.0...2026.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.11 to 3.13\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.13 (2026-04-22)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.12 (2026-04-21)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/89cdfd27338896cee6b1ee18e64c96ac28684ce0\"\u003e\u003ccode\u003e89cdfd2\u003c/code\u003e\u003c/a\u003e Release v3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1eb068687543118147417a8d8a70674e2c172891\"\u003e\u003ccode\u003e1eb0686\u003c/code\u003e\u003c/a\u003e Pre-release 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5f20d1e41eea3b3873d18d83d7a384784f72a92e\"\u003e\u003ccode\u003e5f20d1e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/220\"\u003e#220\u003c/a\u003e from kjd/unicode-next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/4ea84252ab21e62a79e5a3273746112b5dcfb810\"\u003e\u003ccode\u003e4ea8425\u003c/code\u003e\u003c/a\u003e Regenerate idnadata.py with correct NFKC_CF data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/fd47341a08bbdcffda33694211ca4de10170cd41\"\u003e\u003ccode\u003efd47341\u003c/code\u003e\u003c/a\u003e Use NFKC_CF from Unicode data files instead of Python's unicodedata module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a5304a4cdbd7b31595f8ac42ffdfa88f5b936467\"\u003e\u003ccode\u003ea5304a4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/219\"\u003e#219\u003c/a\u003e from kjd/release-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d80d6f9254d699961fa2c669a1534cde9d4ee5b6\"\u003e\u003ccode\u003ed80d6f9\u003c/code\u003e\u003c/a\u003e Release v3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1bb44ddb3f2a9dcf97a6ac11aba34e5b6ed31291\"\u003e\u003ccode\u003e1bb44dd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/218\"\u003e#218\u003c/a\u003e from kjd/release-candidate-3.12rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/909c49d15b8d159be163bccc7972116baffdb47b\"\u003e\u003ccode\u003e909c49d\u003c/code\u003e\u003c/a\u003e Release candidate for 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5459a10370f005dc09921aee3201b5a45699f9d\"\u003e\u003ccode\u003ec5459a1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/217\"\u003e#217\u003c/a\u003e from kjd/housekeeping-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.11...v3.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jiter` from 0.12.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/dcdc93df6b9c6eb53facb0fff725069d9528d735\"\u003e\u003ccode\u003edcdc93d\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/974695165327d19c93eb7b6030050c6555125ff2\"\u003e\u003ccode\u003e9746951\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/7f311e91b35e9896a43d0f57e7a3ca905efb1a5b\"\u003e\u003ccode\u003e7f311e9\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/246\"\u003e#246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/52d6f7df7d7eb94ec8cc3307d466e49ef98fdf60\"\u003e\u003ccode\u003e52d6f7d\u003c/code\u003e\u003c/a\u003e Update pyodide to 0.28 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/40c53b38ef8049e222f11ed345f2309ad3e5e249\"\u003e\u003ccode\u003e40c53b3\u003c/code\u003e\u003c/a\u003e remove hyperlint (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/891a4d4f127b6d720439755c20e7193ad83531f9\"\u003e\u003ccode\u003e891a4d4\u003c/code\u003e\u003c/a\u003e Update to edition 2024, MSRV 1.88 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/b14af5e412454275d6a303f4517faec74bfcc4c1\"\u003e\u003ccode\u003eb14af5e\u003c/code\u003e\u003c/a\u003e Avoid stack overflow in \u003ccode\u003ePyStringCache\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/1764e65598dc197402769a054160583c26da9ef8\"\u003e\u003ccode\u003e1764e65\u003c/code\u003e\u003c/a\u003e Introduce zizmor (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/29a5e6dd444c950d57ef347ff42f4015174e7d27\"\u003e\u003ccode\u003e29a5e6d\u003c/code\u003e\u003c/a\u003e Add yamlfmt (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/cb40f58b9d3baf89d3a68b1ee9ce4919a592025e\"\u003e\u003ccode\u003ecb40f58\u003c/code\u003e\u003c/a\u003e Modernize project setup using uv (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/240\"\u003e#240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/jiter/compare/v0.12.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.0.2 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.0 (2026-04-17)\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/wandile0157/smartdoc-ai-backend/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandile0157%2Fsmartdoc-ai-backend/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"4290110444","node_id":"PR_kwDOQguR2c7TrcCW","number":4,"state":"closed","title":"build(deps): bump the python-minor-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-27T04:42:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-19T06:23:45.000Z","updated_at":"2026-04-27T04:42:47.000Z","time_to_close":685140,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-minor-patch","update_count":43,"packages":[{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.2","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.4","new_version":"46.0.7","repository_url":"https://github.com/pyca/cryptography"},{"name":"ecdsa","old_version":"0.19.1","new_version":"0.19.2","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fsspec","old_version":"2026.1.0","new_version":"2026.3.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jiter","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"lxml","old_version":"6.0.2","new_version":"6.1.0","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.2.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"nltk","old_version":"3.9.2","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"openai","old_version":"2.16.0","new_version":"2.32.0","repository_url":"https://github.com/openai/openai-python"},{"name":"packaging","old_version":"26.0","new_version":"26.1","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"12.1.0","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"postgrest","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"psycopg-binary","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.2","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.41.5","new_version":"2.46.2","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyiceberg","old_version":"0.10.0","new_version":"0.11.1","repository_url":"https://github.com/apache/iceberg-python"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pypdfium2","old_version":"5.3.0","new_version":"5.7.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"pyroaring","old_version":"1.0.3","new_version":"1.0.4","repository_url":"https://github.com/Ezibenroc/PyRoaringBitMap"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.26","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"realtime","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"reportlab","old_version":"4.4.9","new_version":"4.4.10"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"storage3","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-auth","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-functions","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"textblob","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.44.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"yarl","old_version":"1.22.0","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 43 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.2.25` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.4` | `46.0.7` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.1` | `0.19.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.1.0` | `2026.3.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.14.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.2` | `6.1.0` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.2.1` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.2` | `3.9.4` |\n| [openai](https://github.com/openai/openai-python) | `2.16.0` | `2.32.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.2.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.2` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.46.2` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyiceberg](https://github.com/apache/iceberg-python) | `0.10.0` | `0.11.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.12.1` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.3.0` | `5.7.0` |\n| [pyroaring](https://github.com/Ezibenroc/PyRoaringBitMap) | `1.0.3` | `1.0.4` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.26` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.4.4` |\n| [reportlab](https://www.reportlab.com/) | `4.4.9` | `4.4.10` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [storage3](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [supabase-auth](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [supabase-functions](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.19.0` | `0.20.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.44.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.23.0` |\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 `certifi` from 2026.1.4 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\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.01.04...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.4 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...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.3.1 to 8.3.2\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.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\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. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3084\"\u003e#3084\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3152\"\u003e#3152\u003c/a\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\u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3199\"\u003e#3199\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3202\"\u003e#3202\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3209\"\u003e#3209\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3212\"\u003e#3212\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2991\"\u003e#2991\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2993\"\u003e#2993\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3110\"\u003e#3110\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3140\"\u003e#3140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3121\"\u003e#3121\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3201\"\u003e#3201\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3213\"\u003e#3213\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3225\"\u003e#3225\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/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.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\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n:issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e2991\u003c/code\u003e :issue:\u003ccode\u003e2993\u003c/code\u003e :issue:\u003ccode\u003e3110\u003c/code\u003e :pr:\u003ccode\u003e3139\u003c/code\u003e :pr:\u003ccode\u003e3140\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. :pr:\u003ccode\u003e3139\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. :issue:\u003ccode\u003e3121\u003c/code\u003e :pr:\u003ccode\u003e3201\u003c/code\u003e :pr:\u003ccode\u003e3213\u003c/code\u003e :pr:\u003ccode\u003e3225\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/click/commit/052c006033729bbb422cbdad0c4fee988ecb5aa5\"\u003e\u003ccode\u003e052c006\u003c/code\u003e\u003c/a\u003e Change update release date.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/502b7ce7b131473ef00a3586e60bb000f33b4c43\"\u003e\u003ccode\u003e502b7ce\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' of \u003ca href=\"https://github.com/pallets/click\"\u003ehttps://github.com/pallets/click\u003c/a\u003e into release-8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a0a37e411820861d48e21b131fdd840abaf746e0\"\u003e\u003ccode\u003ea0a37e4\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3301\"\u003e#3301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/57be6fc2b40eb40279d022e6aabc983ee0dfb7a9\"\u003e\u003ccode\u003e57be6fc\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/781d6a88bdd30229e72a84cd6753b0235f339679\"\u003e\u003ccode\u003e781d6a8\u003c/code\u003e\u003c/a\u003e Update publish workflows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ff795b66ba945239c779b528171f5fe4536cf844\"\u003e\u003ccode\u003eff795b6\u003c/code\u003e\u003c/a\u003e Update precommit pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dd87ef4f9fa7d6f13e14885e9a6842a21ededebc\"\u003e\u003ccode\u003edd87ef4\u003c/code\u003e\u003c/a\u003e Update github action pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/93d3f9d22e90035bc2b51c2183c15bd4a021376f\"\u003e\u003ccode\u003e93d3f9d\u003c/code\u003e\u003c/a\u003e Release version 8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3299ba1a8a5de34b24a7226a683a837d8a0857e7\"\u003e\u003ccode\u003e3299ba1\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b7f62c4d002e5b5bca3ebef6b995b7338740fe6f\"\u003e\u003ccode\u003eb7f62c4\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.2\"\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.4 to 46.0.7\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.7 - 2026-04-07\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **SECURITY ISSUE**: Fixed an issue where non-contiguous buffers could be\n  passed to APIs that accept Python buffers, which could lead to buffer\n  overflow. **CVE-2026-39892**\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.6.\n\u003cp\u003e.. _v46-0-6:\u003c/p\u003e\n\u003cp\u003e46.0.6 - 2026-03-25\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSECURITY ISSUE\u003c/strong\u003e: Fixed a bug where name constraints were not applied\nto peer names during verification when the leaf certificate contains a\nwildcard DNS SAN. Ordinary X.509 topologies are not affected by this bug,\nincluding those used by the Web PKI. Credit to \u003cstrong\u003eOleh Konko (1seal)\u003c/strong\u003e for\nreporting the issue. \u003cstrong\u003eCVE-2026-34073\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-5:\u003c/p\u003e\n\u003cp\u003e46.0.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/622d672e429a7cff836a23c5903683dbec1901f5\"\u003e\u003ccode\u003e622d672\u003c/code\u003e\u003c/a\u003e 46.0.7 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14602\"\u003e#14602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/91d728897bdad30cd5c79a2b23e207f1f050d587\"\u003e\u003ccode\u003e91d7288\u003c/code\u003e\u003c/a\u003e Cherry-pick \u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14542\"\u003e#14542\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14543\"\u003e#14543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.4...46.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ecdsa` from 0.19.1 to 0.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/releases\"\u003eecdsa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.2\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to use newer version of Ubuntu.\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/tlsfuzzer/python-ecdsa/blob/master/NEWS\"\u003eecdsa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eRelease 0.19.2 (26 Mar 2026)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI to use newer version of Ubuntu.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.1 (13 Mar 2025)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eder.remove_implitic\u003c/code\u003e and \u003ccode\u003eder.encode_implicit\u003c/code\u003e for decoding and\nencoding DER IMPLICIT values with custom tag values and arbitrary\nclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMinor fixes around arithmetic with curves that have non-prime order\n(useful for experimentation, not practical deployments)\u003c/li\u003e\n\u003cli\u003eFix arithmetic to work with curves that have (0, 0) on the curve\u003c/li\u003e\n\u003cli\u003eFix canonicalization of signatures when \u003ccode\u003es\u003c/code\u003e is just slightly\nabove half of curve order\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped official support for Python 3.5 (again, issues with CI, support\nfor Python 2.6 and Python 2.7 is unchanged)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOfficialy support Python 3.12 and 3.13 (add them to CI)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoval of few more unnecessary \u003ccode\u003esix.b\u003c/code\u003e literals (Alexandre Detiste)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix typos in warning messages\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.0 (08 Apr 2024)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eto_ssh\u003c/code\u003e in \u003ccode\u003eVerifyingKey\u003c/code\u003e and \u003ccode\u003eSigningKey\u003c/code\u003e, supports Ed25519 keys only\n(Pablo Mazzini)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for twisted Brainpool curves\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDoc fix:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix curve equation in glossary\u003c/li\u003e\n\u003cli\u003eDocumentation for signature encoding and signature decoding functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped official support for 3.3 and 3.4 (because of problems running them\nin CI, not because it's actually incompatible; support for 2.6 and 2.7 is\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/tlsfuzzer/python-ecdsa/commit/bd66899550d7185939bf27b75713a2ac9325a9d3\"\u003e\u003ccode\u003ebd66899\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/9c046ee7f61649a8a43d3f6f9c64f13e76e148db\"\u003e\u003ccode\u003e9c046ee\u003c/code\u003e\u003c/a\u003e tests: reject truncated DER lengths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/acc40fdaf7bb09aafc912a687ca6ed063ecaface\"\u003e\u003ccode\u003eacc40fd\u003c/code\u003e\u003c/a\u003e der: reject truncated lengths in octet/implicit/constructed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/55aca7830c41af8d6b66ce2ba71fb9aac35085ec\"\u003e\u003ccode\u003e55aca78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tlsfuzzer/python-ecdsa/issues/363\"\u003e#363\u003c/a\u003e from gstarovo/ubuntu20-deprecation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/c4f0df174ad3ae75e59f4e9f47d4a912f5fe21cf\"\u003e\u003ccode\u003ec4f0df1\u003c/code\u003e\u003c/a\u003e chore: change to ubuntu-22 since u-20 is deprecated\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/compare/python-ecdsa-0.19.1...python-ecdsa-0.19.2\"\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.0\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.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\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003e@app.vibe()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15280\"\u003e#15280\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/vibe/\"\u003eVibe Coding\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo for \u003ccode\u003eclient_secret\u003c/code\u003e in OAuth2 form docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14946\"\u003e#14946\u003c/a\u003e 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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15279\"\u003e#15279\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 orjson from 3.11.7 to 3.11.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15276\"\u003e#15276\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 ruff from 0.15.0 to 0.15.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15277\"\u003e#15277\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15274\"\u003e#15274\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 fastmcp from 2.14.5 to 3.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15267\"\u003e#15267\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 FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15270\"\u003e#15270\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 requests from 2.32.5 to 2.33.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15228\"\u003e#15228\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 ty check to \u003ccode\u003elint.sh\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15136\"\u003e#15136\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.2\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Increase lower bound to \u003ccode\u003epydantic \u0026gt;=2.9.0.\u003c/code\u003e and fix the test suite. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15139\"\u003e#15139\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\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add missing last release notes dates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15202\"\u003e#15202\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 for contributors and team members regarding translation PRs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15200\"\u003e#15200\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 code blocks in reference docs overflowing table width. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15094\"\u003e#15094\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 duplicated words in docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15116\"\u003e#15116\u003c/a\u003e by \u003ca href=\"https://github.com/AhsanSheraz\"\u003e\u003ccode\u003e@​AhsanSheraz\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs for \u003ccode\u003epyproject.toml\u003c/code\u003e with \u003ccode\u003eentrypoint\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15075\"\u003e#15075\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 links in docs to no longer use the classes external-link and internal-link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15061\"\u003e#15061\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\u003c!-- 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/708606c982cf35718cb2214c0bb9261cf548f042\"\u003e\u003ccode\u003e708606c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/13be6a3a0f12d3f36c286196ef555dd51dc09edb\"\u003e\u003ccode\u003e13be6a3\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b264878d71b2dc0e9e0f90ef15459d4302a7f9c\"\u003e\u003ccode\u003e4b26487\u003c/code\u003e\u003c/a\u003e ⬆️ Support free-threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15149\"\u003e#15149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f796c346a8537876de43729ff1ca1409d4648893\"\u003e\u003ccode\u003ef796c34\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/09d1d1cb7073b3c7bd1f58fcf6faefa9b2c29de4\"\u003e\u003ccode\u003e09d1d1c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae4e45c5cc20a1e1503fbcab2369821d188feb09\"\u003e\u003ccode\u003eae4e45c\u003c/code\u003e\u003c/a\u003e 🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15363\"\u003e#15363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9653034b8d459607a4b7f761e6c23a6f287fa5fa\"\u003e\u003ccode\u003e9653034\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f9a102faf071dbfa812a3af88d7d309d2ded4a6\"\u003e\u003ccode\u003e6f9a102\u003c/code\u003e\u003c/a\u003e ⬆ Bump cryptography from 46.0.5 to 46.0.7 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15314\"\u003e#15314\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/eba8942c81dbf990d25fbae34e6601bdbc21e74b\"\u003e\u003ccode\u003eeba8942\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/77d080caf850b8af5c0f467389edf03c057c7697\"\u003e\u003ccode\u003e77d080c\u003c/code\u003e\u003c/a\u003e ⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15309\"\u003e#15309\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.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2026.1.0 to 2026.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/49e6189b2cd8ee95b9357bff6a5671ea3b32c2ca\"\u003e\u003ccode\u003e49e6189\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2005\"\u003e#2005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/e73753a3c9086398a54942d26f7bc4a7232ac336\"\u003e\u003ccode\u003ee73753a\u003c/code\u003e\u003c/a\u003e Remove the deprecated 'pyxet' from the list of libraries (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2001\"\u003e#2001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/4bd065327f496fac714c9891111bc67c8d8cceae\"\u003e\u003ccode\u003e4bd0653\u003c/code\u003e\u003c/a\u003e conf should attempt types (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2004\"\u003e#2004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/463a1f08b52e2637728a28e1371577e8ea21496d\"\u003e\u003ccode\u003e463a1f0\u003c/code\u003e\u003c/a\u003e fix: allow withdirs parameter in glob for AbstractFileSystem (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1998\"\u003e#1998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/19e3cfe92b1bad9f759b4a399c3fbbb518e92455\"\u003e\u003ccode\u003e19e3cfe\u003c/code\u003e\u003c/a\u003e Fix typos (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2003\"\u003e#2003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/90bcbba391bddef400dde62e03c2eea9a2bdbd3d\"\u003e\u003ccode\u003e90bcbba\u003c/code\u003e\u003c/a\u003e fix typo in async docs: 'is' -\u0026gt; 'if' (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1992\"\u003e#1992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/846c9aa2e1eefe976f4c61bd954e7683ae9e7bb2\"\u003e\u003ccode\u003e846c9aa\u003c/code\u003e\u003c/a\u003e Apply \u003ccode\u003elru_cache\u003c/code\u003e manually per \u003ccode\u003eLazyReferenceMapper\u003c/code\u003e instance (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1985\"\u003e#1985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/fa850c13440b9a649b41afce8f0f4ecca73f9d73\"\u003e\u003ccode\u003efa850c1\u003c/code\u003e\u003c/a\u003e fix putting multiple files using SFTP (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1991\"\u003e#1991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/e6668a146cd07b9f50530c49ea3916d8ab13e169\"\u003e\u003ccode\u003ee6668a1\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1989\"\u003e#1989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/b6bd0752c1f133fb5005b4b21c065bde76f2c52b\"\u003e\u003ccode\u003eb6bd075\u003c/code\u003e\u003c/a\u003e fix parquet tests (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1988\"\u003e#1988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fsspec/filesystem_spec/compare/2026.1.0...2026.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jiter` from 0.12.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/dcdc93df6b9c6eb53facb0fff725069d9528d735\"\u003e\u003ccode\u003edcdc93d\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/974695165327d19c93eb7b6030050c6555125ff2\"\u003e\u003ccode\u003e9746951\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/7f311e91b35e9896a43d0f57e7a3ca905efb1a5b\"\u003e\u003ccode\u003e7f311e9\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/246\"\u003e#246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/52d6f7df7d7eb94ec8cc3307d466e49ef98fdf60\"\u003e\u003ccode\u003e52d6f7d\u003c/code\u003e\u003c/a\u003e Update pyodide to 0.28 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/40c53b38ef8049e222f11ed345f2309ad3e5e249\"\u003e\u003ccode\u003e40c53b3\u003c/code\u003e\u003c/a\u003e remove hyperlint (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/891a4d4f127b6d720439755c20e7193ad83531f9\"\u003e\u003ccode\u003e891a4d4\u003c/code\u003e\u003c/a\u003e Update to edition 2024, MSRV 1.88 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/b14af5e412454275d6a303f4517faec74bfcc4c1\"\u003e\u003ccode\u003eb14af5e\u003c/code\u003e\u003c/a\u003e Avoid stack overflow in \u003ccode\u003ePyStringCache\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/1764e65598dc197402769a054160583c26da9ef8\"\u003e\u003ccode\u003e1764e65\u003c/code\u003e\u003c/a\u003e Introduce zizmor (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/29a5e6dd444c950d57ef347ff42f4015174e7d27\"\u003e\u003ccode\u003e29a5e6d\u003c/code\u003e\u003c/a\u003e Add yamlfmt (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/cb40f58b9d3baf89d3a68b1ee9ce4919a592025e\"\u003e\u003ccode\u003ecb40f58\u003c/code\u003e\u003c/a\u003e Modernize project setup using uv (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/240\"\u003e#240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/jiter/compare/v0.12.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.0.2 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.0 (2026-04-17)\u003c/h1\u003e\n\u003cp\u003eThis release fixes a possible external entity injection (XXE) vulnerability in\n\u003ccode\u003eiterparse()\u003c/code\u003e and the \u003ccode\u003eETCompatXMLParser\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eGH#486: The HTML ARIA accessibility attributes were added to the set of safe attributes\nin \u003ccode\u003elxml.html.defs\u003c/code\u003e.  This allows \u003ccode\u003elxml_html_clean\u003c/code\u003e to pass them through.\nPatch by oomsveta.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe default chunk size for reading from file-likes in \u003ccode\u003eiterparse()\u003c/code\u003e is now configurable\nwith a new \u003ccode\u003echunk_size\u003c/code\u003e argument.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2146291: The \u003ccode\u003eresolve_entities\u003c/code\u003e option was still set to \u003ccode\u003eTrue\u003c/code\u003e for\n\u003ccode\u003eiterparse\u003c/code\u003e and \u003ccode\u003eETCompatXMLParser\u003c/code\u003e, allowing for external entity injection (XXE)\nwhen using these parsers without setting this option explicitly.\nThe default was now changed to \u003ccode\u003e'internal'\u003c/code\u003e only (as for the normal XML and HTML parsers\nsince lxml 5.0).\nIssue found by Sihao Qiu as CVE-2026-41066.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.0.4 (2026-04-12)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2148019: Spurious MemoryError during namespace cleanup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.0.3 (2026-04-09)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSeveral out of memory error cases now raise \u003ccode\u003eMemoryError\u003c/code\u003e that were not handled before.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSlicing with large step values (outside of \u003ccode\u003e+/- sys.maxsize\u003c/code\u003e) could trigger undefined C behaviour.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLP#2125399: Some failing tests were fixed or disabled in PyPy.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLP#2138421: Memory leak in error cases when setting the \u003ccode\u003epublic_id\u003c/code\u003e or \u003ccode\u003esystem_url\u003c/code\u003e of a document.\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/lxml/lxml/commit/43722f4402afa48b7890a96ce012eb0b9b1af5be\"\u003e\u003ccode\u003e43722f4\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/87470409b17188a5a7dbefcfa124af9cd792ffaa\"\u003e\u003ccode\u003e8747040\u003c/code\u003e\u003c/a\u003e Name version of option change in docstring.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6c36e6cef77db5087a1fff1a0d1ca8fed963afe7\"\u003e\u003ccode\u003e6c36e6c\u003c/code\u003e\u003c/a\u003e Fix pypistats URL in download statistics script.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c7d76d6cb817c8e1f316e43b16cab5e6ad669ad0\"\u003e\u003ccode\u003ec7d76d6\u003c/code\u003e\u003c/a\u003e Change security policy to point to Github security advisories.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/378ccf82db8160928807c55ed580c0443aa94f42\"\u003e\u003ccode\u003e378ccf8\u003c/code\u003e\u003c/a\u003e Update project income report.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/315270b810a9e3276c60daba549299d204ac962b\"\u003e\u003ccode\u003e315270b\u003c/code\u003e\u003c/a\u003e Docs: Reduce TOC depth of package pages and move module contents first.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6dbba7f3c72f655b05b26ef453fdee31af13ccf5\"\u003e\u003ccode\u003e6dbba7f\u003c/code\u003e\u003c/a\u003e Docs: Show current year in copyright line.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/e4385bfa5d79527350d5ef17372fb70ba80b4cce\"\u003e\u003ccode\u003ee4385bf\u003c/code\u003e\u003c/a\u003e Update project income report.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/5bed1e1a227cd9ba5a879aaeacdf504093a3f6e8\"\u003e\u003ccode\u003e5bed1e1\u003c/code\u003e\u003c/a\u003e Validate file hashes in release download script.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c13ee10a429f1144779bb1cbf6ae3bec808ae9c1\"\u003e\u003ccode\u003ec13ee10\u003c/code\u003e\u003c/a\u003e Prepare release of 6.1.0.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lxml/lxml/compare/lxml-6.0.2...lxml-6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.2.0 to 5.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.1] - 2026-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\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/hajimes/mmh3/commit/a4c44d81a8dc433ac50977425d7a5cf27cea9f0c\"\u003e\u003ccode\u003ea4c44d8\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 5.2.1 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c83701d471d557594ab7f8003c13a476057fa7b1\"\u003e\u003ccode\u003ec83701d\u003c/code\u003e\u003c/a\u003e ci: update workflow files (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/d4311b2d97b0f965aec857d94fa19aa0cd70ef8a\"\u003e\u003ccode\u003ed4311b2\u003c/code\u003e\u003c/a\u003e style: migrate to Ruff (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/25f98341e1ed5b5de9f1c7c28d67265501506281\"\u003e\u003ccode\u003e25f9834\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c4079917eadce86025724913e0cb620948e1199f\"\u003e\u003ccode\u003ec407991\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/ee3a78a1fe3f82c7e2018f290d6ab262603d24dd\"\u003e\u003ccode\u003eee3a78a\u003c/code\u003e\u003c/a\u003e ci: update wheel configs (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/60957d75f0c30cf25d1f5354f5a5ac0febd952e3\"\u003e\u003ccode\u003e60957d7\u003c/code\u003e\u003c/a\u003e fix: modify sed commands for cross-platform builds (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/da3bb5f0aa7a004b2ae3a5d0eb3d06c05f370130\"\u003e\u003ccode\u003eda3bb5f\u003c/code\u003e\u003c/a\u003e Switch back to workflow_dispatch for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/bdaedf92e861df6eab2e3b229ce92fc688fa8f79\"\u003e\u003ccode\u003ebdaedf9\u003c/code\u003e\u003c/a\u003e Bump pyperf in the dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/3342d17e5315fb9935f9348824c5b7acbc0b4808\"\u003e\u003ccode\u003e3342d17\u003c/code\u003e\u003c/a\u003e Bump dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nltk` from 3.9.2 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nltk/nltk/blob/develop/ChangeLog\"\u003enltk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 3.9.4 2026-03-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14\u003c/li\u003e\n\u003cli\u003eFix bug in Levenshtein distance when substitution_cost \u0026gt; 2\u003c/li\u003e\n\u003cli\u003eFix bug in Treebank detokeniser re quote ordering\u003c/li\u003e\n\u003cli\u003eFix bug in Jaro similarity for empty strings\u003c/li\u003e\n\u003cli\u003eSeveral security enhancements\u003c/li\u003e\n\u003cli\u003eFix GHSA-rf74-v2fm-23pw: unbounded recursion in JSONTaggedDecoder\u003c/li\u003e\n\u003cli\u003eImplement TextTiling vocabulary introduction method (Hearst 1997)\u003c/li\u003e\n\u003cli\u003eFix ALINE feature matrix errors and add comprehensive tests\u003c/li\u003e\n\u003cli\u003eSupport multiple VerbNet versions, fix longid/shortid regex for VerbNet ids\u003c/li\u003e\n\u003cli\u003eLet downloader fallback to md5 when sha256 is unavailable\u003c/li\u003e\n\u003cli\u003eSeveral other minor bugfixes and code cleanups\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.4:\nMin-Yen Kan, Eric Kafe, Emily Voss, bowiechen, Hrudhai01,\njancallewaert, Mr-Neutr0n, pollak.peter89, ylwango613,\u003c/p\u003e\n\u003cp\u003eVersion 3.9.3 2026-02-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2025-14009: secure ZIP extraction in nltk.downloader (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3468\"\u003e#3468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/arbitrary reads in nltk.data for protocol-less refs (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3467\"\u003e#3467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/abs paths in corpus readers and FS po...\n\n_Description has been truncated_","html_url":"https://github.com/wandile0157/smartdoc-ai-backend/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandile0157%2Fsmartdoc-ai-backend/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"},{"uuid":"4044543812","node_id":"PR_kwDOQ9X9Ls7JBNr7","number":21,"state":"open","title":"chore(deps): bump the patch-updates group across 1 directory with 11 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-09T09:48:54.000Z","updated_at":"2026-03-09T09:48:55.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-updates","update_count":11,"packages":[{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.5","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.2.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"numpy","old_version":"2.4.1","new_version":"2.4.3","repository_url":"https://github.com/numpy/numpy"},{"name":"orjson","old_version":"3.11.5","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.21","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-updates group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.5` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.2.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.1` | `2.4.3` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.5` | `3.11.7` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.21` | `0.0.22` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n\n\nUpdates `charset-normalizer` from 3.4.4 to 3.4.5\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.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\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.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\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/7411396ebd495e1abc28f5682975b5c662b2ff35\"\u003e\u003ccode\u003e7411396\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/8de6012bfdd619ab3177e0a05cb7db450b078d7e\"\u003e\u003ccode\u003e8de6012\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/713\"\u003e#713\u003c/a\u003e from jawah/release-3.4.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/39d0fba5db5d562cf6a95609d87c4834ad98181e\"\u003e\u003ccode\u003e39d0fba\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.4.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f211d4ada7afc4226b3a3b65a90fdac6099cceb4\"\u003e\u003ccode\u003ef211d4a\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/707\"\u003e#707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9123864dc43574250beb85c0774b3df7b2f252d1\"\u003e\u003ccode\u003e9123864\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.0 to 4.32.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/710\"\u003e#710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5cb1f12f77ee7052b77877fc6aa8e20317f13868\"\u003e\u003ccode\u003e5cb1f12\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/711\"\u003e#711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7e6858257bfc6a1b7e3e728b7ab0b02cc975e518\"\u003e\u003ccode\u003e7e68582\u003c/code\u003e\u003c/a\u003e :arrow_up: Update setuptools requirement from \u0026lt;=81,\u0026gt;=68 to \u0026gt;=68,\u0026lt;=82.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e1e2ccb8577e63eb2c436497d3a37100b66cf321\"\u003e\u003ccode\u003ee1e2ccb\u003c/code\u003e\u003c/a\u003e correct cp_similarity ratio ceiling (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/209f9ff8d80180b1f3032c144d073dfa3c0d17b1\"\u003e\u003ccode\u003e209f9ff\u003c/code\u003e\u003c/a\u003e fix TypeError 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\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a8503f65889b8b737e4442a3dea1c6491f4f280\"\u003e\u003ccode\u003e6a8503f\u003c/code\u003e\u003c/a\u003e Fix logger 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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...3.4.5\"\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.3 to 46.0.5\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.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003c/p\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eDropped support for win_arm64 wheels\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-3:\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/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.3...46.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.2.0 to 5.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.1] - 2026-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\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/hajimes/mmh3/commit/a4c44d81a8dc433ac50977425d7a5cf27cea9f0c\"\u003e\u003ccode\u003ea4c44d8\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 5.2.1 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c83701d471d557594ab7f8003c13a476057fa7b1\"\u003e\u003ccode\u003ec83701d\u003c/code\u003e\u003c/a\u003e ci: update workflow files (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/d4311b2d97b0f965aec857d94fa19aa0cd70ef8a\"\u003e\u003ccode\u003ed4311b2\u003c/code\u003e\u003c/a\u003e style: migrate to Ruff (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/25f98341e1ed5b5de9f1c7c28d67265501506281\"\u003e\u003ccode\u003e25f9834\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c4079917eadce86025724913e0cb620948e1199f\"\u003e\u003ccode\u003ec407991\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/ee3a78a1fe3f82c7e2018f290d6ab262603d24dd\"\u003e\u003ccode\u003eee3a78a\u003c/code\u003e\u003c/a\u003e ci: update wheel configs (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/60957d75f0c30cf25d1f5354f5a5ac0febd952e3\"\u003e\u003ccode\u003e60957d7\u003c/code\u003e\u003c/a\u003e fix: modify sed commands for cross-platform builds (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/da3bb5f0aa7a004b2ae3a5d0eb3d06c05f370130\"\u003e\u003ccode\u003eda3bb5f\u003c/code\u003e\u003c/a\u003e Switch back to workflow_dispatch for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/bdaedf92e861df6eab2e3b229ce92fc688fa8f79\"\u003e\u003ccode\u003ebdaedf9\u003c/code\u003e\u003c/a\u003e Bump pyperf in the dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/3342d17e5315fb9935f9348824c5b7acbc0b4808\"\u003e\u003ccode\u003e3342d17\u003c/code\u003e\u003c/a\u003e Bump dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `multidict` from 6.7.0 to 6.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/multidict/releases\"\u003emultidict's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.7.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed slow memory leak caused by identity by adding \u003ccode\u003ePy_DECREF\u003c/code\u003e to identity value before leaving \u003ccode\u003emd_pop_one\u003c/code\u003e on success\n-- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1284\"\u003e#1284\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/multidict/blob/master/CHANGES.rst\"\u003emultidict's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.7.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003e(2026-01-25)\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed slow memory leak caused by identity by adding \u003ccode\u003ePy_DECREF\u003c/code\u003e to identity value before leaving \u003ccode\u003emd_pop_one\u003c/code\u003e on success\n-- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n:issue:\u003ccode\u003e1284\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/39d3c322f6a9e824beee9b6f178e3166205f0f59\"\u003e\u003ccode\u003e39d3c32\u003c/code\u003e\u003c/a\u003e Release 6.7.1 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1289\"\u003e#1289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/77bb95e83c226c3557015d055a1ce4a29889d49e\"\u003e\u003ccode\u003e77bb95e\u003c/code\u003e\u003c/a\u003e Fix memory leak caused by identity when default value is inplace (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1284\"\u003e#1284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/87dd4a49a5e8d5b01a8d801cac0c92984726f411\"\u003e\u003ccode\u003e87dd4a4\u003c/code\u003e\u003c/a\u003e Bump dependabot/fetch-metadata from 2.4.0 to 2.5.0 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/6c764124a79da8f700faa1e3638311c58828947e\"\u003e\u003ccode\u003e6c76412\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/b91a033a29f360e76a8a24b92d50120d9cd08065\"\u003e\u003ccode\u003eb91a033\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 6 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1277\"\u003e#1277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/84bf82c0e2ec68919e7f3b7c5c7388a82f4737ee\"\u003e\u003ccode\u003e84bf82c\u003c/code\u003e\u003c/a\u003e Bump psutil from 7.1.3 to 7.2.1 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1279\"\u003e#1279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/3f7b3cec6a5c23a100d972a667e7f67b84809bb3\"\u003e\u003ccode\u003e3f7b3ce\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 3.3.0 to 3.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/bbae9027cc99e23fc1ab98d97ed0adcd644c32c8\"\u003e\u003ccode\u003ebbae902\u003c/code\u003e\u003c/a\u003e Bump sigstore/gh-action-sigstore-python from 3.1.0 to 3.2.0 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/000b5b0d25b3fc672c4226615f52a7d0cd6c2c96\"\u003e\u003ccode\u003e000b5b0\u003c/code\u003e\u003c/a\u003e Remove follow_untyped_imports for mypy-sphinx (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1286\"\u003e#1286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/3d2d63044c98c8ede9204e8a9685921763cc0d4e\"\u003e\u003ccode\u003e3d2d630\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/multidict/compare/v6.7.0...v6.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.1 to 2.4.3\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.2 (Feb 1, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.2 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.2 is a patch release that fixes bugs discovered after the\n2.4.1 release. Highlights are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixes memory leaks\u003c/li\u003e\n\u003cli\u003eUpdates OpenBLAS to fix hangs\u003c/li\u003e\n\u003c/ul\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\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eDaniel Tang +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKumar Aditya\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eVikram Kumar +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 12 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/30629\"\u003e#30629\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/30636\"\u003e#30636\u003c/a\u003e: TYP: \u003ccode\u003earange\u003c/code\u003e: accept datetime strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30657\"\u003e#30657\u003c/a\u003e: MAINT: avoid possible race condition by not touching \u003ccode\u003eos.environ\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30700\"\u003e#30700\u003c/a\u003e: BUG: validate contraction axes in tensordot (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30521\"\u003e#30521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30701\"\u003e#30701\u003c/a\u003e: DOC: __array_namespace__info__: set_module not __module__ (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30679\"\u003e#30679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30702\"\u003e#30702\u003c/a\u003e: BUG: fix free-threaded PyObject layout in replace_scalar_type_names...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30703\"\u003e#30703\u003c/a\u003e: TST: fix limited API example in tests for latest Cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30709\"\u003e#30709\u003c/a\u003e: BUG: Fix some bugs found via valgrind (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30680\"\u003e#30680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30712\"\u003e#30712\u003c/a\u003e: MAINT: replace ob_type access with Py_TYPE in PyArray_CheckExact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30713\"\u003e#30713\u003c/a\u003e: BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30736\"\u003e#30736\u003c/a\u003e: BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30737\"\u003e#30737\u003c/a\u003e: backport scipy-openblas version change\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/numpy/numpy/commit/8bcb2e72e67c343e55165e6064fe6a9dc011e954\"\u003e\u003ccode\u003e8bcb2e7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30974\"\u003e#30974\u003c/a\u003e from charris/prepare-2.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9a2b5eef3b142e852c0092d449b2ea54e8d87314\"\u003e\u003ccode\u003e9a2b5ee\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.3 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/a822ac28798a9a7ed1094879caaf885e282ccb6c\"\u003e\u003ccode\u003ea822ac2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30973\"\u003e#30973\u003c/a\u003e from charris/backport-30961\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/039bf549aad7ac149587884582e561f555ed770a\"\u003e\u003ccode\u003e039bf54\u003c/code\u003e\u003c/a\u003e MAINT: update openblas (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30961\"\u003e#30961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/254bafa78941aa1ceb9f4680c9f07e9ec6bb94b0\"\u003e\u003ccode\u003e254bafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30955\"\u003e#30955\u003c/a\u003e from charris/backport-30879\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/0cc7d38c659741ddece03e59dad154bf3006bf49\"\u003e\u003ccode\u003e0cc7d38\u003c/code\u003e\u003c/a\u003e ENH: Test .kind not .char in np.testing.assert_equal (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30879\"\u003e#30879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9ee571dee7982c1e8369148c1585a07e9bd878b8\"\u003e\u003ccode\u003e9ee571d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30957\"\u003e#30957\u003c/a\u003e from charris/backport-30918\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/f302a1699020958b2ee02a3eb4177160f8153556\"\u003e\u003ccode\u003ef302a16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30958\"\u003e#30958\u003c/a\u003e from charris/backport-30938\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d240a09784a41e9f7b00de2d9d24b2a1d46d171b\"\u003e\u003ccode\u003ed240a09\u003c/code\u003e\u003c/a\u003e MAINT: Don't use vulture 2.15, it has false positives\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/4fc08e9ebfd25530345fbd8f03bcd60fb7b0fbda\"\u003e\u003ccode\u003e4fc08e9\u003c/code\u003e\u003c/a\u003e MAINT: Don't use vulture 2.15, it has false positives\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.4.1...v2.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.11.5 to 3.11.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\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/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6 - 2026-01-29\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\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/ijl/orjson/commit/ec2b066cae79ae4a90ed126ac5723335dd99e408\"\u003e\u003ccode\u003eec2b066\u003c/code\u003e\u003c/a\u003e 3.11.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1ca01f78cf4198ec37407d83713afa6e5c53dbf9\"\u003e\u003ccode\u003e1ca01f7\u003c/code\u003e\u003c/a\u003e zmij\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1716a226bd1f38db01503f30cd37b0efec48d88e\"\u003e\u003ccode\u003e1716a22\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec02024c3837255064f248c0d2d331319b75e9ad\"\u003e\u003ccode\u003eec02024\u003c/code\u003e\u003c/a\u003e 3.11.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d58168733189f82b3fd0c058dff73e05d09202e6\"\u003e\u003ccode\u003ed581687\u003c/code\u003e\u003c/a\u003e build, clippy misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4105b29b2275f200f6fae01349bef02ccf1bc2e2\"\u003e\u003ccode\u003e4105b29\u003c/code\u003e\u003c/a\u003e writer::num\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/62bb185b70785ded49c79c26f8c9781f1e6fe370\"\u003e\u003ccode\u003e62bb185\u003c/code\u003e\u003c/a\u003e Fix sporadic crash on serializing object close\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d860078a973f44401265c5c4ad12a7dbe4f839ad\"\u003e\u003ccode\u003ed860078\u003c/code\u003e\u003c/a\u003e PyRef idiom refactors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/343ae2f148197918aba9f8562db42c364620e4b8\"\u003e\u003ccode\u003e343ae2f\u003c/code\u003e\u003c/a\u003e Deserializer, Utf8Buffer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/7835f58d1c56947d1cf7a18acdfc07a2bca9b0f2\"\u003e\u003ccode\u003e7835f58\u003c/code\u003e\u003c/a\u003e PyBytesRef and other input refactor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.5...3.11.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.1.0 to 12.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.1.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePatch libavif for svt-av1 4.0 compatibility \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9413\"\u003e#9413\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOB Write with invalid tile extents \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\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/python-pillow/Pillow/commit/5158d98c807e719c5938aa3886913ef0ea6814e9\"\u003e\u003ccode\u003e5158d98\u003c/code\u003e\u003c/a\u003e 12.1.1 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/9000313cc5d4a31bdcdd6d7f0781101abab553aa\"\u003e\u003ccode\u003e9000313\u003c/code\u003e\u003c/a\u003e Fix OOB Write with invalid tile extents (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cd0111849fb32c40860e3ee3d57b9b1cee4260cf\"\u003e\u003ccode\u003ecd01118\u003c/code\u003e\u003c/a\u003e Patch libavif for svt-av1 4.0 compatibility\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.1.0...12.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions 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/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\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/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.21 to 0.0.22\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.22\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop directory path from filename in \u003ccode\u003eFile\u003c/code\u003e \u003ca href=\"https://github.com/Kludex/python-multipart/commit/9433f4bbc9652bdde82bbe380984e32f8cfc89c4\"\u003e9433f4b\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.21...0.0.22\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.21...0.0.22\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/Kludex/python-multipart/blob/master/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.22 (2026-01-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop directory path from filename in \u003ccode\u003eFile\u003c/code\u003e \u003ca href=\"https://github.com/Kludex/python-multipart/commit/9433f4bbc9652bdde82bbe380984e32f8cfc89c4\"\u003e9433f4b\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/Kludex/python-multipart/commit/bea7bbb2904da8ce39123a845088dc72464eaddf\"\u003e\u003ccode\u003ebea7bbb\u003c/code\u003e\u003c/a\u003e Version 0.0.22 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0fb59a9df0f273bfde99740b302ccb2ae45e2b8a\"\u003e\u003ccode\u003e0fb59a9\u003c/code\u003e\u003c/a\u003e chore: add return type on test (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/9433f4bbc9652bdde82bbe380984e32f8cfc89c4\"\u003e\u003ccode\u003e9433f4b\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/d5c91ecb0aa1cae03fe2d9811d193c952e714f17\"\u003e\u003ccode\u003ed5c91ec\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/5a90631b484f8d3284b691d453c24be3db57f5cb\"\u003e\u003ccode\u003e5a90631\u003c/code\u003e\u003c/a\u003e bump uv (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.21...0.0.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tenacity` from 9.1.2 to 9.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jd/tenacity/releases\"\u003etenacity's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eretry()\u003c/code\u003e annotations with async \u003ccode\u003esleep=\u003c/code\u003e function by \u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/555\"\u003ejd/tenacity#555\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.3...9.1.4\"\u003ehttps://github.com/jd/tenacity/compare/9.1.3...9.1.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e9.1.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eApply formatting to num seconds in before_sleep_log by \u003ca href=\"https://github.com/aguinane\"\u003e\u003ccode\u003e@​aguinane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/489\"\u003ejd/tenacity#489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/sandrobonazzola\"\u003e\u003ccode\u003e@​sandrobonazzola\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/528\"\u003ejd/tenacity#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTyping: Accept non-standard logger in helpers logging something by \u003ca href=\"https://github.com/k4nar\"\u003e\u003ccode\u003e@​k4nar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/540\"\u003ejd/tenacity#540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(wait): add \u003ccode\u003ewait_exception\u003c/code\u003e strategy by \u003ca href=\"https://github.com/capitan-davide\"\u003e\u003ccode\u003e@​capitan-davide\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/541\"\u003ejd/tenacity#541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix syntax error in wait_chain docstring example by \u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/548\"\u003ejd/tenacity#548\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: drop Python 3.9 support (EOL) by \u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/552\"\u003ejd/tenacity#552\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport async sleep for sync fn-to-retry by \u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/551\"\u003ejd/tenacity#551\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/aguinane\"\u003e\u003ccode\u003e@​aguinane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/489\"\u003ejd/tenacity#489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sandrobonazzola\"\u003e\u003ccode\u003e@​sandrobonazzola\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/528\"\u003ejd/tenacity#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k4nar\"\u003e\u003ccode\u003e@​k4nar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/540\"\u003ejd/tenacity#540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capitan-davide\"\u003e\u003ccode\u003e@​capitan-davide\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/541\"\u003ejd/tenacity#541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/548\"\u003ejd/tenacity#548\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/552\"\u003ejd/tenacity#552\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.2...9.1.3\"\u003ehttps://github.com/jd/tenacity/compare/9.1.2...9.1.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/jd/tenacity/commit/d4e868d6b8368c00b5a1fad54de36c2c8c3a0fb3\"\u003e\u003ccode\u003ed4e868d\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eretry()\u003c/code\u003e annotations with async \u003ccode\u003esleep=\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/24415ebbca6ecafdf870af06441656dd96149d1d\"\u003e\u003ccode\u003e24415eb\u003c/code\u003e\u003c/a\u003e support async sleep for sync fn (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/3bf33b44096077a0608855f6a380fd8a25fa6f26\"\u003e\u003ccode\u003e3bf33b4\u003c/code\u003e\u003c/a\u003e chore: drop Python 3.9 support (EOL) (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/7027da31d27155c7b1831e292a29575af7b5c2b1\"\u003e\u003ccode\u003e7027da3\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/21ae7d0cc27069defd111e8ec81407f6d14089f6\"\u003e\u003ccode\u003e21ae7d0\u003c/code\u003e\u003c/a\u003e docs: fix syntax error in wait_chain docstring example (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/ef12c9ed1df4dec3748b1fa9304527245b041d2d\"\u003e\u003ccode\u003eef12c9e\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/checkout in the github-actions group (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/c35a4b341ef5e553c670290fbd8835b59d5f08a3\"\u003e\u003ccode\u003ec35a4b3\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/e792bbaf0cab3685c8000899cb9f61e04d6f3e23\"\u003e\u003ccode\u003ee792bba\u003c/code\u003e\u003c/a\u003e ci: fix mypy (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/0f55245b8da5c4cc8385c2f692164a6ff52cd88e\"\u003e\u003ccode\u003e0f55245\u003c/code\u003e\u003c/a\u003e ci: remove reno requirements (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/815c34fec2c8d64fe2bc8a6bdd79bfb41f1938c6\"\u003e\u003ccode\u003e815c34f\u003c/code\u003e\u003c/a\u003e feat(wait): add \u003ccode\u003ewait_exception\u003c/code\u003e strategy (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/541\"\u003e#541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.2...9.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tqdm` from 4.67.1 to 4.67.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tqdm/tqdm/releases\"\u003etqdm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etqdm v4.67.3 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix py3.7 dependencies (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1706\"\u003e#1706\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.67.2 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport \u003ccode\u003epandas\u0026gt;=3\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1703\"\u003e#1703\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1701\"\u003e#1701\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1650\"\u003e#1650\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1700\"\u003e#1700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003eformat_interval\u003c/code\u003e for negative numbers (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emisc linting\u003c/li\u003e\n\u003cli\u003eframework updates (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1704\"\u003e#1704\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ebump CI workflow \u0026amp; \u003ccode\u003epre-commit\u003c/code\u003e dependencies\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003epyupgrade\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd py3.13 support\u003c/li\u003e\n\u003cli\u003efix py3.7 tests\u003c/li\u003e\n\u003cli\u003eupdate \u003ccode\u003esetuptools-scm\u003c/code\u003e usage\u003c/li\u003e\n\u003cli\u003esupport auto-dedented docstrings when building docs in py3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003etests: relax flaky benchmarks\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/tqdm/tqdm/commit/75bdb6c379bcfc6c592b6342dc791a092b5d6ae0\"\u003e\u003ccode\u003e75bdb6c\u003c/code\u003e\u003c/a\u003e fix py3.7 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/09a863bf4658f19a911eb7d3fa4f9e4eb0b33496\"\u003e\u003ccode\u003e09a863b\u003c/code\u003e\u003c/a\u003e bump version, merge pull request \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1704\"\u003e#1704\u003c/a\u003e from tqdm/devel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/33d24cdbd4bd958cdc6cecbbcc903b52f8c37a05\"\u003e\u003ccode\u003e33d24cd\u003c/code\u003e\u003c/a\u003e update pyproject syntax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/70b912484824f130be0506c2e139a1f764751fac\"\u003e\u003ccode\u003e70b9124\u003c/code\u003e\u003c/a\u003e add py3.13 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/a74d8f8d97d2f77937e09a32a9e1975e167261d6\"\u003e\u003ccode\u003ea74d8f8\u003c/code\u003e\u003c/a\u003e drop _dist_ver\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/14d72e2c18ba34363d629a43794a47513a9aa368\"\u003e\u003ccode\u003e14d72e2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1703\"\u003e#1703\u003c/a\u003e from wingding12/fix-pandas-3.0-and-negative-interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/a69dac84b3d2e7ab23dbfcccae29b28a753ee5eb\"\u003e\u003ccode\u003ea69dac8\u003c/code\u003e\u003c/a\u003e fix dedented docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/a986d228405324ca422050e4787118c187cb870f\"\u003e\u003ccode\u003ea986d22\u003c/code\u003e\u003c/a\u003e tests: fix pandas deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/bb7aa4ddb706b9d99b72a811eb62ea35553ff1e2\"\u003e\u003ccode\u003ebb7aa4d\u003c/code\u003e\u003c/a\u003e tests: fix pandas deprecated applymap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/0647db1c7480a21eb08ba214b0756d232e079e3a\"\u003e\u003ccode\u003e0647db1\u003c/code\u003e\u003c/a\u003e misc tidy\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tqdm/tqdm/compare/v4.67.1...v4.67.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/renzotjpro/ecommerce_support/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/renzotjpro%2Fecommerce_support/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"},{"uuid":"3918736506","node_id":"PR_kwDOHUSeqs7CmuGz","number":437,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-10T00:00:02.000Z","updated_at":"2026-02-10T00:05:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":21,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.9.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-httpserver","old_version":"1.1.3","new_version":"1.1.4","repository_url":"https://github.com/csernazs/pytest-httpserver"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.4"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.0","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.9.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-httpserver](https://github.com/csernazs/pytest-httpserver) | `1.1.3` | `1.1.4` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.4` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.0` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.9.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082\"\u003e08bc7082\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29b\"\u003e0e5ec29b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649f\"\u003e1917649f\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa5\"\u003e2bc15fa5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a\"\u003e5ac2808a\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc5\"\u003e74c9ecc5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469\"\u003e7b319469\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe\"\u003e8e21a7fe\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b\"\u003ec8dd7a0b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486b\"\u003ecdb2486b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3\"\u003edbd162b3\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b8\"\u003edbe9d8b8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396\"\u003e2ef63396\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1\"\u003e5d9fafe1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd\"\u003e721ea2dd\u003c/a\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e0e5ec29bc6a31b77bcfba4254cef5bffb199095c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003ec8dd7a0b124c395b7b60189ee78f47aba8d51f7d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e08bc7082db7392f13bc8c51511b4afa9c7b157c9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e74c9ecc54173420bfcd48498a8956088a035af50\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e7b319469d2e495ea0bf7367f3949190e8f5d9fff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e8e21a7fe54d0a043f31937671003630a1985a5d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a69195c688ed42c3604d4bfadbb602a66\"\u003e5ac2808a69195c688ed42c3604d4bfadbb602a66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3583e32e6f705a51f5c3fef333a9b89d0\"\u003edbd162b3583e32e6f705a51f5c3fef333a9b89d0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa570683ba584230c51b439d189dbdcd580\"\u003e2bc15fa570683ba584230c51b439d189dbdcd580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b89d975dfbed8c830a5687ccfafea51d5f\"\u003edbe9d8b89d975dfbed8c830a5687ccfafea51d5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649fac41481da1adea6c2a9f4ab1298a34c4\"\u003e1917649fac41481da1adea6c2a9f4ab1298a34c4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486bb051dcbfbffc2510aff6aacede5e54d3\"\u003ecdb2486bb051dcbfbffc2510aff6aacede5e54d3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange contructors of MRD and AAOW AsyncGrpcClient.grpc_client to AsyncGrpcClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1727\"\u003e#1727\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003ee730bf50c4584f737ab86b2e409ddb27b40d2cec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\"\u003e721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1466b5ccb1db4a814967a5cc8465148a2\"\u003e5d9fafe1466b5ccb1db4a814967a5cc8465148a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting in setup.py dependencies list (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1713\"\u003e#1713\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cc4831d7e253b265b0b96e08b5479f4c759be442\"\u003ecc4831d7e253b265b0b96e08b5479f4c759be442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/77c1edaa6de4058e545ad1b68bde5507b75b8e37\"\u003e\u003ccode\u003e77c1eda\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260202T123858Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1736\"\u003e#1736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e\u003ccode\u003e0e5ec29\u003c/code\u003e\u003c/a\u003e feat: add get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7a00dfb73696d6db98747509e9f2f2bd0c94c53a\"\u003e\u003ccode\u003e7a00dfb\u003c/code\u003e\u003c/a\u003e chore: Add README for running zonal buckets samples (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e\u003ccode\u003e2ef6339\u003c/code\u003e\u003c/a\u003e fix: receive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003e\u003ccode\u003ec8dd7a0\u003c/code\u003e\u003c/a\u003e feat: expose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e\u003ccode\u003e08bc708\u003c/code\u003e\u003c/a\u003e feat: update generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e\u003ccode\u003e74c9ecc\u003c/code\u003e\u003c/a\u003e feat: Move Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e\u003ccode\u003e7b31946\u003c/code\u003e\u003c/a\u003e feat: add default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003e\u003ccode\u003ee730bf5\u003c/code\u003e\u003c/a\u003e fix!: Change contructors of MRD and AAOW AsyncGrpcClient.grpc_client to Async...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e\u003ccode\u003e8e21a7f\u003c/code\u003e\u003c/a\u003e feat: expose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.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/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows 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/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.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/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache 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/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 to 7 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper 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/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action from 5 to 7 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.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/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.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/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.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/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.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/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (e...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/437","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/437","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/437/packages"},{"uuid":"3857982199","node_id":"PR_kwDOHUSeqs6_eFIV","number":436,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-26T22:40:03.000Z","updated_at":"2026-01-26T22:50:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":20,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.8.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.2"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.8.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.2` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.8.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961be\"\u003e0e2961be\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement \u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e;append_from_file\u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956\"\u003e1333c956\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb\"\u003e139390cb\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5\"\u003e89bfe7a5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec\"\u003ea57ea0ec\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee0\"\u003ed90f0ee0\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf\"\u003ef7095faf\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b\"\u003e4a609a4b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711da\"\u003e6dc711da\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebucket:\u003c/strong\u003e Move blob fails when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\"\u003e6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16846a69f3a911844971241899f60cce14\"\u003e2d5a7b16846a69f3a911844971241899f60cce14\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b3f4ba1396825911cb02f8a9649135cd5\"\u003e4a609a4b3f4ba1396825911cb02f8a9649135cd5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/googleapis/python-storage/blob/57405e956a7ca579b20582bf6435cec42743c478/google/cloud/storage/bucket.py#L2256\"\u003emove_blob\u003c/a\u003e failure when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for partial list buckets (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1606\"\u003e#1606\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/92fc2b00429415b9fbe7cba0167778eee60449e2\"\u003e92fc2b0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake return_partial_success and unreachable fields public for list Bucket (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/323cddd5d439e04e12614106eab1928fd4008c0b\"\u003e323cddd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1612\"\u003e#1612\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDont pass credentials to StorageClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/195d644c4d4feec98e9a9cd9fad67fc774c50dc8\"\u003e195d644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.4.1...v3.5.0\"\u003e3.5.0\u003c/a\u003e (2025-11-05)\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/googleapis/python-storage/commit/16cf512c2e05a6eb0e4ba7280814886e35b2942b\"\u003e\u003ccode\u003e16cf512\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260113T144551Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/94ad8952cecfbfaf0e7917fbf4a362f4996f0c78\"\u003e\u003ccode\u003e94ad895\u003c/code\u003e\u003c/a\u003e chore(librarian): bump library version to 3.7.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e\u003ccode\u003e89bfe7a\u003c/code\u003e\u003c/a\u003e feat(experimental): flush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003e\u003ccode\u003ea57ea0e\u003c/code\u003e\u003c/a\u003e feat(experimental): add write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0c35d3f3dd767831259a188156140b18f7ff9927\"\u003e\u003ccode\u003e0c35d3f\u003c/code\u003e\u003c/a\u003e chore(tests): add test for reading unfinalized appendable objects with genera...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003e\u003ccode\u003ed90f0ee\u003c/code\u003e\u003c/a\u003e feat(experimental): add bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a994dbf9c4d6f432a5eff9da08ec88840d47c159\"\u003e\u003ccode\u003ea994dbf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;skip notification tests until b/470069573 is fixed\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1694\"\u003e#1694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dfc60b3e0167790a8ade61b1b2143f297514bdd1\"\u003e\u003ccode\u003edfc60b3\u003c/code\u003e\u003c/a\u003e chore: delete topic after creation (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1687\"\u003e#1687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e\u003ccode\u003e1333c95\u003c/code\u003e\u003c/a\u003e feat: implement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fe6d7c930bf4e83187120eda52aeaab932502e9f\"\u003e\u003ccode\u003efe6d7c9\u003c/code\u003e\u003c/a\u003e chore: optimization to reduce number of open TCP connections while running zo...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.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/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows 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/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.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/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache 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/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 to 7 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper 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/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action from 5 to 7 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.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/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.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/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.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/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.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/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (entity.presentDetails) (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1793\"\u003e#1793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/4277ed87a0572cad92894b0b8b2b5104efe2d3f6\"\u003e\u003ccode\u003e4277ed8\u003c/code\u003e\u003c/a\u003e feat: Add work objects support (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1783\"\u003e#1783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/998ee043209ec90adaa29f12c16210f218bfbb61\"\u003e\u003ccode\u003e998ee04\u003c/code\u003e\u003c/a\u003e fix: improve the release instructions (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1792\"\u003e#1792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/21ac4f79e8e8ab6fb868682fc3814522ea37ab6a\"\u003e\u003ccode\u003e21ac4f7\u003c/code\u003e\u003c/a\u003e chore: Add .github/CODEOWNERS file (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/ae366555d6d430befd11dd2f0bf76707879635aa\"\u003e\u003ccode\u003eae36655\u003c/code\u003e\u003c/a\u003e chore(release): version 3.38.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/66b45239097983b8a0b5b82a02e694ba8f90a06e\"\u003e\u003ccode\u003e66b4523\u003c/code\u003e\u003c/a\u003e docs: link to context actions block and related reference (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1789\"\u003e#1789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9e089031db3041e1f4c7611aa023923ae586d5fa\"\u003e\u003ccode\u003e9e08903\u003c/code\u003e\u003c/a\u003e ci: upload test results using the recommended codecov action (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1787\"\u003e#1787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.5.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where pie trace \u003ccode\u003elegend\u003c/code\u003e, \u003ccode\u003eshowlegend\u003c/code\u003e attributes don't accept array values [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5464\"\u003e#5464\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5465\"\u003e#5465\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/my-tien\"\u003e\u003ccode\u003e@​my-tien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Plotly Express ignored trace-specific color sequences defined in templates via \u003ccode\u003etemplate.data.\u0026lt;trace_type\u0026gt;\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5437\"\u003e#5437\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/antonymilne\"\u003e\u003ccode\u003e@​antonymilne\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003evalidate_gantt\u003c/code\u003e function [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5386\"\u003e#5386\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/misrasaurabh1\"\u003e\u003ccode\u003e@​misrasaurabh1\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.0 to version 3.3.1. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.1\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5456\"\u003e#5456\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for arrays for the pie properties \u003ccode\u003eshowlegend\u003c/code\u003e and \u003ccode\u003elegend\u003c/code\u003e, so that these can be configured per slice. [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7580\"\u003e#7580\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.4.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable chan...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/436","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/436","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/436/packages"},{"uuid":"3753802652","node_id":"PR_kwDOOaPssc66JH_l","number":75,"state":"closed","title":"Bump the python-packages group across 1 directory with 90 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T16:21:12.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-22T13:25:38.000Z","updated_at":"2026-01-12T16:21:14.000Z","time_to_close":1824934,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":90,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.11.12","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":"chromadb","old_version":"1.0.8","new_version":"1.3.7","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.127.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"htmldate","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/adbar/htmldate"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"1.2.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"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":"jiter","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"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":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.0.2","new_version":"2.4.0","repository_url":"https://github.com/numpy/numpy"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"onnxruntime","old_version":"1.21.0","new_version":"1.23.2","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.77.0","new_version":"2.14.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"7.4.2","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.7","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"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":"regex","old_version":"2024.11.6","new_version":"2025.11.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.2.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.20.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"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.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.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.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 90 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.3.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.127.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.12.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.45.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.72.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [htmldate](https://github.com/adbar/htmldate) | `1.9.3` | `1.9.4` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `1.2.3` |\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| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.12.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\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| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.0.2` | `2.4.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.21.0` | `1.23.2` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.14.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `7.4.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.33.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.7` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.1` |\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| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.11.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.30.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `4.1.0` | `5.2.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.57.3` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.20.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\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/agronholm/anyio/commit/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.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.8.1 to 3.11.0\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.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\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\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/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\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.0\"\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 `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\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/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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 `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.4\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.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\u003ch1\u003ev6.2.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003c!-- 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/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\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/af8b7d4ffa48d5947161ddb8c1ef1c60dda1e816\"\u003e\u003ccode\u003eaf8b7d4\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/372\"\u003e#372\u003c/a\u003e: Convert setup.cfg to pyproject.toml.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/20b8a192f666420a1986b793fd5846b89fdcd647\"\u003e\u003ccode\u003e20b8a19\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/370\"\u003e#370\u003c/a\u003e: Mention that using \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e with condition requires self to be...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/116fb4c3459067442d731e01a3db4694b50722f1\"\u003e\u003ccode\u003e116fb4c\u003c/code\u003e\u003c/a\u003e Minor style and readability improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/96546ea34f8c77df009fb3bc019b72b03589c3fd\"\u003e\u003ccode\u003e96546ea\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0106cc1d4764c9a94cd39a55579ce49bca9f4e1e\"\u003e\u003ccode\u003e0106cc1\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/4ee2600ab09b109f79d4ef08103240bf9f239b2d\"\u003e\u003ccode\u003e4ee2600\u003c/code\u003e\u003c/a\u003e Release v6.2.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/f1cec391fea1a1e407fe596b6e37b849adf7fce5\"\u003e\u003ccode\u003ef1cec39\u003c/code\u003e\u003c/a\u003e Minor improvements from GitHub Copilot code review.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.4\"\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 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `chromadb` from 1.0.8 to 1.3.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecli-1.2.4\u003c/h2\u003e\n\u003cp\u003eCLI release.\u003c/p\u003e\n\u003ch2\u003e1.3.6\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.3.6\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.3.6\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-12-10T05:26\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.3.6.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH] Use GCS with aws-sdk-go-v2 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5878\"\u003echroma-core/chroma#5878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Refactor compactor into three chained orchestrators by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5831\"\u003echroma-core/chroma#5831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Disable S3heap service and remove nonce-related logic by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5866\"\u003echroma-core/chroma#5866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove next_run from attached_functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5871\"\u003echroma-core/chroma#5871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Update the README with correct logo by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5888\"\u003echroma-core/chroma#5888\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Register package name for chroma-bm25 in js client, fix default-embed warning in getOrCreate by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5889\"\u003echroma-core/chroma#5889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add blank task support for ChromaCloudQwenEmbeddingFunction by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5874\"\u003echroma-core/chroma#5874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota info for concurrent reads and writes per collection by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5875\"\u003echroma-core/chroma#5875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update error message returning to give back messages from server in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5890\"\u003echroma-core/chroma#5890\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make admission controlled client generic by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5883\"\u003echroma-core/chroma#5883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Upgrade to foyer 0.20.1 to support multi-disk by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5887\"\u003echroma-core/chroma#5887\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Agentic Search Guide by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5881\"\u003echroma-core/chroma#5881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Modified AttachFunction to do 2PC on a new is_ready column by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5872\"\u003echroma-core/chroma#5872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Make wal3::Error::Internal log where it originates. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5891\"\u003echroma-core/chroma#5891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Let Chroma Cloud EFs get API key from client by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5892\"\u003echroma-core/chroma#5892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add getCollectionByCrn api support in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5894\"\u003echroma-core/chroma#5894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.1.6 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5895\"\u003echroma-core/chroma#5895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Execute task with no backfill or incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5867\"\u003echroma-core/chroma#5867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Try shoe-horning sparse vector tokens into the metadata value. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5767\"\u003echroma-core/chroma#5767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make all functions incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5893\"\u003echroma-core/chroma#5893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Take a suggestion from propel by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5901\"\u003echroma-core/chroma#5901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Put both token id and token str in the statistics by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5777\"\u003echroma-core/chroma#5777\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Introduce backfill capabilities in compactor by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5896\"\u003echroma-core/chroma#5896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Persist a backfill record on log to trigger backfill by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5897\"\u003echroma-core/chroma#5897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Refactor AttachedFunctionOrchestrator to return a FunctionContext instead of its individual fields by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5902\"\u003echroma-core/chroma#5902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add HTTP endpoint for get_attached_function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5898\"\u003echroma-core/chroma#5898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add Python wrapper API for statistics function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5899\"\u003echroma-core/chroma#5899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Add test_statistics_wrapper to CI by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5903\"\u003echroma-core/chroma#5903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Adds YouTube video to agentic search guide page by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5905\"\u003echroma-core/chroma#5905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Sparse vector labels in python client by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5904\"\u003echroma-core/chroma#5904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix test flake in test_task_api.py by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5907\"\u003echroma-core/chroma#5907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Upgrade foyer to “7beb132de801e410bc751ecd0318c2a6d2ecd0d3” by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5912\"\u003echroma-core/chroma#5912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add k8s multidisk support by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5913\"\u003echroma-core/chroma#5913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Make sure an input collection soft delete cascades to attached functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5908\"\u003echroma-core/chroma#5908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix authorization calls for functions API by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5915\"\u003echroma-core/chroma#5915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Have stats function paginate through output collection by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5906\"\u003echroma-core/chroma#5906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  wal3 Sometimes returns an \u0026quot;Internal\u0026quot; when it should return \u0026quot;LogContentionFailure\u0026quot; by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5916\"\u003echroma-core/chroma#5916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Document why it is a LogContentionFailure. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5920\"\u003echroma-core/chroma#5920\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/chroma-core/chroma/commit/a4e05b9df2342383ac395be8313b3e509ce725ea\"\u003e\u003ccode\u003ea4e05b9\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.2.4, Python 1.3.7, JS 3.1.8 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6032\"\u003e#6032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/b8a1b97380887580299cd099f9e933632bc204c3\"\u003e\u003ccode\u003eb8a1b97\u003c/code\u003e\u003c/a\u003e [ENH] Holiday edition CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6028\"\u003e#6028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d7d33fa73a587a81adfa43bf0c3754ba8ef6d933\"\u003e\u003ccode\u003ed7d33fa\u003c/code\u003e\u003c/a\u003e [ENH]  Add spanner emulator to the tilt config. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5987\"\u003e#5987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f45ba4e73220604a226fc9dd1b5dfd8129dc34de\"\u003e\u003ccode\u003ef45ba4e\u003c/code\u003e\u003c/a\u003e [RELEASE] Rust client 0.9.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6025\"\u003e#6025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/6405042370d0c8984732174b8647a688bc667386\"\u003e\u003ccode\u003e6405042\u003c/code\u003e\u003c/a\u003e [ENH] Make RFE tiltfile config + values overridable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6026\"\u003e#6026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/8c3eaed952ff91a48fd73ae9073ad4622997e9fc\"\u003e\u003ccode\u003e8c3eaed\u003c/code\u003e\u003c/a\u003e [ENH] Make it possible to deploy multiple chromas in Tiltfile (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5992\"\u003e#5992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4295491011a051c0289d6bbbfdc546818c6b1bb9\"\u003e\u003ccode\u003e4295491\u003c/code\u003e\u003c/a\u003e [BUG]: Fix deadlock in orchestrator test (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6020\"\u003e#6020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/5df18a8297245c2242db8e710384be9532c4a762\"\u003e\u003ccode\u003e5df18a8\u003c/code\u003e\u003c/a\u003e [ENH] Reduce max backoff retry interval in wal3 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6019\"\u003e#6019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/09545d8277eddd6a6959ec7525b3e6f7c15b4c7c\"\u003e\u003ccode\u003e09545d8\u003c/code\u003e\u003c/a\u003e [ENH] Update error message tag in wal3 writer (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6017\"\u003e#6017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/df6602421d06235182ab9a338c08b1f59711b3a3\"\u003e\u003ccode\u003edf66024\u003c/code\u003e\u003c/a\u003e [ENH] - Updates styling for code examples in light mode (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6002\"\u003e#6002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.3.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.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 regr...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"},{"uuid":"3489096185","node_id":"PR_kwDOHUSeqs6sXqmE","number":435,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T21:04:45.000Z","updated_at":"2025-10-06T23:17:40.770Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":19,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.24","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.1","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.3.3","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.24` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.1` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.3` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.3.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.24\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\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.24/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.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/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.1\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.1] - 2025-10-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/commit/ecb00fe74a09c93d49bef0cbd86f600f066494e9\"\u003e\u003ccode\u003eecb00fe\u003c/code\u003e\u003c/a\u003e update uv lockfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/4e96a4369dcf89a895af95898ea92cc4bcacfe78\"\u003e\u003ccode\u003e4e96a43\u003c/code\u003e\u003c/a\u003e version changes for v6.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a0de8c9bdfcf7a2c2462087a585b7e762ca21c51\"\u003e\u003ccode\u003ea0de8c9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5361\"\u003e#5361\u003c/a\u003e from plotly/matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/832b46c77da10c203348a953f04e4c047ec083ef\"\u003e\u003ccode\u003e832b46c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/b258862b0f41ac12e087a65b4370c1675b956dc6\"\u003e\u003ccode\u003eb258862\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5180\"\u003e#5180\u003c/a\u003e from gmjw/secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/2c5e2b61873a8cf92ed8473b98801ab099878dda\"\u003e\u003ccode\u003e2c5e2b6\u003c/code\u003e\u003c/a\u003e fix matplotlib import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/610b7ee6bebf47d6f902f0393f2ca75557a7683e\"\u003e\u003ccode\u003e610b7ee\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/fbbc9d68f9987afaeb7abce9f550b6f0ed660513\"\u003e\u003ccode\u003efbbc9d6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5322\"\u003e#5322\u003c/a\u003e from mgorny/plt-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/d2af541c362c16a4ca6525322149940e88b03ccd\"\u003e\u003ccode\u003ed2af541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5258\"\u003e#5258\u003c/a\u003e from plotly/fix-default-renderer-when-ipython-installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/ead0c767797879fb978743377b67541be98ea8f1\"\u003e\u003ccode\u003eead0c76\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into plt-import\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\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/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"ht...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/435","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/435","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/435/packages"},{"uuid":"2890403540","node_id":"PR_kwDOOaPssc6sSA7U","number":56,"state":"open","title":"Bump the python-packages group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T14:04:10.000Z","updated_at":"2025-10-06T14:04:11.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":79,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.1","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.118.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"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":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"networkx","old_version":"3.4.2","new_version":"3.5","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.0.2","new_version":"2.3.3","repository_url":"https://github.com/numpy/numpy"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"onnxruntime","old_version":"1.21.0","new_version":"1.23.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.77.0","new_version":"2.1.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.10","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.40.1","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.2","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.57.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 79 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.1` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.118.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.41.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.3` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\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| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.5` |\n| [numpy](https://github.com/numpy/numpy) | `2.0.2` | `2.3.3` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.21.0` | `1.23.0` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.1.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.10` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.40.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.57.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\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/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.10.0\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.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\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/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\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\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/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.2\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.10.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.10.05\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.1\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.1\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.1\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-10-05T02:52\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.1.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.1\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH] Tenant override for bm25 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5483\"\u003echroma-core/chroma#5483\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Allow specifying sysdb nodeSelector and tolerations by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5485\"\u003echroma-core/chroma#5485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD]: strip debug symbols from JS bindings by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5486\"\u003echroma-core/chroma#5486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Sort SparseEmbeddings in EFs in ascending order by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5488\"\u003echroma-core/chroma#5488\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Fastembed embedding function with more parameters, add bm25 embedding function by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5489\"\u003echroma-core/chroma#5489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Search should not error on empty collection by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5494\"\u003echroma-core/chroma#5494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Distance calculations sporadically fail on sse. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5500\"\u003echroma-core/chroma#5500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Hard delete for manually GC'ed collections by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5490\"\u003echroma-core/chroma#5490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert serde_bytes deserialize by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5501\"\u003echroma-core/chroma#5501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Log the number of bytes in the parse_json span. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5505\"\u003echroma-core/chroma#5505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  The total_records_post_compaction column could be inaccurate. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5497\"\u003echroma-core/chroma#5497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] make add_tracing_middleware fn public by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5510\"\u003echroma-core/chroma#5510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Update default sparse vector dimension quota by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5502\"\u003echroma-core/chroma#5502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement row iterator for search result by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5498\"\u003echroma-core/chroma#5498\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implements RRF helper expression by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5499\"\u003echroma-core/chroma#5499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Allow dict as search args by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5503\"\u003echroma-core/chroma#5503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD]: fix Tiltfile dependencies by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5514\"\u003echroma-core/chroma#5514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve our usage of the AWS S3 SDK. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5506\"\u003echroma-core/chroma#5506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] move middleware helper behind a feature in chroma-tracing by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5515\"\u003echroma-core/chroma#5515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix equality override for search key by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5518\"\u003echroma-core/chroma#5518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Do not log errors stemming from NotFound files. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5516\"\u003echroma-core/chroma#5516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add sitemap to docs.trychroma.com by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5519\"\u003echroma-core/chroma#5519\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: update \u003ccode\u003ecollection_metadata.updated_at\u003c/code\u003e timestamp when row is updated by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5525\"\u003echroma-core/chroma#5525\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove unused, under-tested object store backend for storage. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5530\"\u003echroma-core/chroma#5530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Schema types by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5509\"\u003echroma-core/chroma#5509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add a concurrency group to our PR checks workflow by \u003ca href=\"https://github.com/eculver\"\u003e\u003ccode\u003e@​eculver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5054\"\u003echroma-core/chroma#5054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Do not trace errors stemming from NotFound sparse indexes by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5531\"\u003echroma-core/chroma#5531\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Support a read-only mode for the rust log service. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5534\"\u003echroma-core/chroma#5534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot; by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5535\"\u003echroma-core/chroma#5535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Make it so the rust log service can start without a dirty log. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5537\"\u003echroma-core/chroma#5537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add headless login to the CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5538\"\u003echroma-core/chroma#5538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Revert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot;\u0026quot; by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5542\"\u003echroma-core/chroma#5542\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.1, CLI 1.1.11, JS 3.0.17 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5541\"\u003echroma-core/chroma#5541\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.1.0...1.1.1\"\u003ehttps://github.com/chroma-core/chroma/compare/1.1.0...1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\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/chroma-core/chroma/commit/34dc0eb9b5b9943ca554aae2b3ecef6c1350f5f9\"\u003e\u003ccode\u003e34dc0eb\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.1, CLI 1.1.11, JS 3.0.17 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5541\"\u003e#5541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecfe811ceae2e880c2750bfb5f6d2731f91ce543\"\u003e\u003ccode\u003eecfe811\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Revert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot;\u0026quot; (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5542\"\u003e#5542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f42f89abc64657c22f664b4f3a7680db01dd9f82\"\u003e\u003ccode\u003ef42f89a\u003c/code\u003e\u003c/a\u003e [ENH] Add headless login to the CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5538\"\u003e#5538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d0cb6dff1eadeaf5caca608fc6be7247bac57203\"\u003e\u003ccode\u003ed0cb6df\u003c/code\u003e\u003c/a\u003e [ENH]  Make it so the rust log service can start without a dirty log. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5537\"\u003e#5537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/53dc52b6ee70236b3394d40ac264d6185dc7fe0e\"\u003e\u003ccode\u003e53dc52b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot; (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5535\"\u003e#5535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/5e6d6d0f8a93cdfcd2a20c6df9dcee41fabc3ef9\"\u003e\u003ccode\u003e5e6d6d0\u003c/code\u003e\u003c/a\u003e [ENH]  Support a read-only mode for the rust log service. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5534\"\u003e#5534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/83544922b89fe9d5b9489f647c53f19f1d1ee95f\"\u003e\u003ccode\u003e8354492\u003c/code\u003e\u003c/a\u003e [CHORE] Do not trace errors stemming from NotFound sparse indexes (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5531\"\u003e#5531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4bfd53cf47450dde3cb26f2e07acd3942502673e\"\u003e\u003ccode\u003e4bfd53c\u003c/code\u003e\u003c/a\u003e [BLD] Add a concurrency group to our PR checks workflow (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5054\"\u003e#5054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f2fadf0aae8d52d44b83161968531a1140ba9008\"\u003e\u003ccode\u003ef2fadf0\u003c/code\u003e\u003c/a\u003e [ENH]: Schema types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5509\"\u003e#5509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/0460b9ba2258eab9cc99618210e0cab3c3122f71\"\u003e\u003ccode\u003e0460b9b\u003c/code\u003e\u003c/a\u003e [CLN]  Remove unused, under-tested object store backend for storage. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5530\"\u003e#5530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.1\"\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.0\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.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\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\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.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\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/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.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 CliRunner. :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.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMix...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"},{"uuid":"2884967614","node_id":"PR_kwDOOaPssc6r9Ry-","number":55,"state":"open","title":"Bump the python-packages group across 1 directory with 72 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-03T13:26:10.000Z","updated_at":"2025-10-03T13:26:11.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":72,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.118.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"2.1.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.9","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.40.1","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.2","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 72 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.118.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.41.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.3` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.1.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.9` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.40.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.2` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\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/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.9.2\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.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\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/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.2\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.0.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: fix high cardinality compaction metrics by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5461\"\u003echroma-core/chroma#5461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  A control interface for GC. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5218\"\u003echroma-core/chroma#5218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] remove tilt_config.yaml by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5440\"\u003echroma-core/chroma#5440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Bump min stack size because it encounters stack overflow otherwise (rare) by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5463\"\u003echroma-core/chroma#5463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.0.15 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5464\"\u003echroma-core/chroma#5464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Remove \u003ccode\u003erc/**-**-**\u003c/code\u003e branch trigger-deploy workflow by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5465\"\u003echroma-core/chroma#5465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] [REVERT]: mark search API not implemented by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5466\"\u003echroma-core/chroma#5466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make rank expr operational in search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5429\"\u003echroma-core/chroma#5429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement idf modifier for BM25 index by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5442\"\u003echroma-core/chroma#5442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[TST] Extend property test for seach endpoint by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5443\"\u003echroma-core/chroma#5443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Box all large futures. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5467\"\u003echroma-core/chroma#5467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] add warp documentation for mcp server by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5468\"\u003echroma-core/chroma#5468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve metrics for S3. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5459\"\u003echroma-core/chroma#5459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Search API cleanup by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5451\"\u003echroma-core/chroma#5451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update to use new deploy workflow inputs by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5471\"\u003echroma-core/chroma#5471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add new methods to ClientManager by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Validate metadata and sparse vector by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5469\"\u003echroma-core/chroma#5469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Quota search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5470\"\u003echroma-core/chroma#5470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Support id filter in where clause by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5472\"\u003echroma-core/chroma#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add overview to intro and tweak one sentence by \u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  ScoutLogs issues a HEAD if possible. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5376\"\u003echroma-core/chroma#5376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] increase cloud quotas in docs + defaults by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5477\"\u003echroma-core/chroma#5477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChroma \u0026lt;\u0026gt; mem0 by \u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5480\"\u003echroma-core/chroma#5480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Remove from k8s anything relating to go logservice. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5441\"\u003echroma-core/chroma#5441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add query config on collection configuration, splade, and bm25 efs by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4901\"\u003echroma-core/chroma#4901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Remove unneeded assigned_node method by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5479\"\u003echroma-core/chroma#5479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Perform read-repair on collections that get written to but have a crash before manifest write. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5476\"\u003echroma-core/chroma#5476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove forked code path for pull logs. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5460\"\u003echroma-core/chroma#5460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] - Adds typescript basics video by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5481\"\u003echroma-core/chroma#5481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Log a metric to track when the log needs to purge dirty. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5482\"\u003echroma-core/chroma#5482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove the go log service code and Docker. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5448\"\u003echroma-core/chroma#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5484\"\u003echroma-core/chroma#5484\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/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.21...1.1.0\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.21...1.1.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/chroma-core/chroma/commit/0bd2f46997ab6b9cd166c5ec3b9ea91fcb9c7b2b\"\u003e\u003ccode\u003e0bd2f46\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4299e646a0cacf5749a12645cf79b015d42c4acf\"\u003e\u003ccode\u003e4299e64\u003c/code\u003e\u003c/a\u003e [CLN]  Remove the go log service code and Docker. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5448\"\u003e#5448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/85c139d33bc5004771f86f33412bada014fb07ef\"\u003e\u003ccode\u003e85c139d\u003c/code\u003e\u003c/a\u003e [CHORE]  Log a metric to track when the log needs to purge dirty. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/07466d2ec8419f3c08d698a724f72e81a4f9be54\"\u003e\u003ccode\u003e07466d2\u003c/code\u003e\u003c/a\u003e [DOC] - Adds typescript basics video (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/664a3b20542054a4df5585751eb4c93d42d32d70\"\u003e\u003ccode\u003e664a3b2\u003c/code\u003e\u003c/a\u003e [CLN]  Remove forked code path for pull logs. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f12f3d460055402966ffe4df3e0d355dfbd32b9\"\u003e\u003ccode\u003e2f12f3d\u003c/code\u003e\u003c/a\u003e [BUG]  Perform read-repair on collections that get written to but have a cras...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/204379bb602a3468bdcc380609ca66d3cbafc89e\"\u003e\u003ccode\u003e204379b\u003c/code\u003e\u003c/a\u003e [CHORE] Remove unneeded assigned_node method (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5479\"\u003e#5479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/702afa5b3f3521b88339bcb0ca7e4044582ccf09\"\u003e\u003ccode\u003e702afa5\u003c/code\u003e\u003c/a\u003e [ENH] add query config on collection configuration, splade, and bm25 efs (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/4901\"\u003e#4901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecf954c1a7ab47c1b377c1639ea0be5b220e50d9\"\u003e\u003ccode\u003eecf954c\u003c/code\u003e\u003c/a\u003e [CHORE]  Remove from k8s anything relating to go logservice. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/56d3b3960c2a353f7e80ee0e0ae320cef6acb63c\"\u003e\u003ccode\u003e56d3b39\u003c/code\u003e\u003c/a\u003e [ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5480\"\u003e#5480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.118.0\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.118.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for \u003ccode\u003eStreamingResponse\u003c/code\u003es with dependencies with \u003ccode\u003eyield\u003c/code\u003e or \u003ccode\u003eUploadFile\u003c/code\u003es, close after the response is done. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14099\"\u003e#14099\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\u003cp\u003eBefore FastAPI 0.118.0, if you used a dependency with \u003ccode\u003eyield\u003c/code\u003e, it would run the exit code after the \u003cem\u003epath operation function\u003c/em\u003e returned but right before sending the response.\u003c/p\u003e\n\u003cp\u003eThis change also meant that if you returned a \u003ccode\u003eStreamingResponse\u003c/code\u003e, the exit code of the dependency with \u003ccode\u003eyield\u003c/code\u003e would have been already run.\u003c/p\u003e\n\u003cp\u003eFor example, if you had a database session in a dependency with \u003ccode\u003eyield\u003c/code\u003e, the \u003ccode\u003eStreamingResponse\u003c/code\u003e would not be able to use that session while streaming data because the session would have already been closed in the exit code after \u003ccode\u003eyield\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis behavior was reverted in 0.118.0, to make the exit code after \u003ccode\u003eyield\u003c/code\u003e be executed after the response is sent.\u003c/p\u003e\n\u003cp\u003eYou can read more about it in the docs for \u003ca href=\"https://fastapi.tiangolo.com/advanced/advanced-dependencies#dependencies-with-yield-httpexception-except-and-background-tasks\"\u003eAdvanced Dependencies - Dependencies with \u003ccode\u003eyield\u003c/code\u003e, \u003ccode\u003eHTTPException\u003c/code\u003e, \u003ccode\u003eexcept\u003c/code\u003e and Background Tasks\u003c/a\u003e. Including what you could do if you wanted to close a database session earlier, before returning the response to the client.\u003c/p\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update \u003ccode\u003etutorial/security/oauth2-jwt/\u003c/code\u003e to use \u003ccode\u003epwdlib\u003c/code\u003e with Argon2 instead of \u003ccode\u003epasslib\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13917\"\u003e#13917\u003c/a\u003e by \u003ca href=\"https://github.com/Neizvestnyj\"\u003e\u003ccode\u003e@​Neizvestnyj\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix typos in OAuth2 password request forms. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14112\"\u003e#14112\u003c/a\u003e by \u003ca href=\"https://github.com/alv2017\"\u003e\u003ccode\u003e@​alv2017\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update contributing guidelines for installing requirements. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14095\"\u003e#14095\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🌐 Sync German docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14098\"\u003e#14098\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14103\"\u003e#14103\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Refactor sponsor image handling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14102\"\u003e#14102\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🐛 Fix sponsor display issue by hiding element on image error. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14097\"\u003e#14097\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🐛 Hide sponsor badge when sponsor image is not displayed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14096\"\u003e#14096\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\u003ch2\u003e0.117.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error when \u003ccode\u003eFile\u003c/code\u003e is declared after \u003ccode\u003eForm\u003c/code\u003e parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11194\"\u003e#11194\u003c/a\u003e by \u003ca href=\"https://github.com/thomasleveil\"\u003e\u003ccode\u003e@​thomasleveil\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.117.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨  Allow \u003ccode\u003eNone\u003c/code\u003e as return type for bodiless responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9425\"\u003e#9425\u003c/a\u003e by \u003ca href=\"https://github.com/hofrob\"\u003e\u003ccode\u003e@​hofrob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow array values for OpenAPI schema \u003ccode\u003etype\u003c/code\u003e field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13639\"\u003e#13639\u003c/a\u003e by \u003ca href=\"https://github.com/sammasak\"\u003e\u003ccode\u003e@​sammasak\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add OpenAPI \u003ccode\u003eexternal_docs\u003c/code\u003e parameter to \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13713\"\u003e#13713\u003c/a\u003e by \u003ca href=\"https://github.com/cmtoro\"\u003e\u003ccode\u003e@​cmtoro\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⚡️ Fix \u003ccode\u003edefault_factory\u003c/code\u003e for response model field with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9704\"\u003e#9704\u003c/a\u003e by \u003ca href=\"https://github.com/vvanglro\"\u003e\u003ccode\u003e@​vvanglro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix inconsistent processing of model docstring formfeed char with Pydantic V1. PR \u003ca href=\"https://redirect....\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/55","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/55","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/55/packages"},{"uuid":"2871391616","node_id":"PR_kwDOOaPssc6rJfWA","number":54,"state":"closed","title":"Bump the python-packages group across 1 directory with 71 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-03T13:21:44.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-29T17:04:57.000Z","updated_at":"2025-10-03T13:21:44.000Z","time_to_close":332207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":71,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.118.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.2","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.9","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.2","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 71 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.118.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.9` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.2` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\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/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.9.2\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.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.2\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.0.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: fix high cardinality compaction metrics by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5461\"\u003echroma-core/chroma#5461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  A control interface for GC. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5218\"\u003echroma-core/chroma#5218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] remove tilt_config.yaml by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5440\"\u003echroma-core/chroma#5440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Bump min stack size because it encounters stack overflow otherwise (rare) by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5463\"\u003echroma-core/chroma#5463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.0.15 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5464\"\u003echroma-core/chroma#5464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Remove \u003ccode\u003erc/**-**-**\u003c/code\u003e branch trigger-deploy workflow by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5465\"\u003echroma-core/chroma#5465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] [REVERT]: mark search API not implemented by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5466\"\u003echroma-core/chroma#5466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make rank expr operational in search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5429\"\u003echroma-core/chroma#5429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement idf modifier for BM25 index by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5442\"\u003echroma-core/chroma#5442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[TST] Extend property test for seach endpoint by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5443\"\u003echroma-core/chroma#5443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Box all large futures. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5467\"\u003echroma-core/chroma#5467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] add warp documentation for mcp server by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5468\"\u003echroma-core/chroma#5468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve metrics for S3. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5459\"\u003echroma-core/chroma#5459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Search API cleanup by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5451\"\u003echroma-core/chroma#5451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update to use new deploy workflow inputs by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5471\"\u003echroma-core/chroma#5471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add new methods to ClientManager by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Validate metadata and sparse vector by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5469\"\u003echroma-core/chroma#5469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Quota search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5470\"\u003echroma-core/chroma#5470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Support id filter in where clause by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5472\"\u003echroma-core/chroma#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add overview to intro and tweak one sentence by \u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  ScoutLogs issues a HEAD if possible. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5376\"\u003echroma-core/chroma#5376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] increase cloud quotas in docs + defaults by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5477\"\u003echroma-core/chroma#5477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChroma \u0026lt;\u0026gt; mem0 by \u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5480\"\u003echroma-core/chroma#5480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Remove from k8s anything relating to go logservice. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5441\"\u003echroma-core/chroma#5441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add query config on collection configuration, splade, and bm25 efs by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4901\"\u003echroma-core/chroma#4901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Remove unneeded assigned_node method by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5479\"\u003echroma-core/chroma#5479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Perform read-repair on collections that get written to but have a crash before manifest write. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5476\"\u003echroma-core/chroma#5476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove forked code path for pull logs. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5460\"\u003echroma-core/chroma#5460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] - Adds typescript basics video by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5481\"\u003echroma-core/chroma#5481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Log a metric to track when the log needs to purge dirty. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5482\"\u003echroma-core/chroma#5482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove the go log service code and Docker. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5448\"\u003echroma-core/chroma#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5484\"\u003echroma-core/chroma#5484\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/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.21...1.1.0\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.21...1.1.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/chroma-core/chroma/commit/0bd2f46997ab6b9cd166c5ec3b9ea91fcb9c7b2b\"\u003e\u003ccode\u003e0bd2f46\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4299e646a0cacf5749a12645cf79b015d42c4acf\"\u003e\u003ccode\u003e4299e64\u003c/code\u003e\u003c/a\u003e [CLN]  Remove the go log service code and Docker. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5448\"\u003e#5448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/85c139d33bc5004771f86f33412bada014fb07ef\"\u003e\u003ccode\u003e85c139d\u003c/code\u003e\u003c/a\u003e [CHORE]  Log a metric to track when the log needs to purge dirty. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/07466d2ec8419f3c08d698a724f72e81a4f9be54\"\u003e\u003ccode\u003e07466d2\u003c/code\u003e\u003c/a\u003e [DOC] - Adds typescript basics video (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/664a3b20542054a4df5585751eb4c93d42d32d70\"\u003e\u003ccode\u003e664a3b2\u003c/code\u003e\u003c/a\u003e [CLN]  Remove forked code path for pull logs. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f12f3d460055402966ffe4df3e0d355dfbd32b9\"\u003e\u003ccode\u003e2f12f3d\u003c/code\u003e\u003c/a\u003e [BUG]  Perform read-repair on collections that get written to but have a cras...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/204379bb602a3468bdcc380609ca66d3cbafc89e\"\u003e\u003ccode\u003e204379b\u003c/code\u003e\u003c/a\u003e [CHORE] Remove unneeded assigned_node method (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5479\"\u003e#5479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/702afa5b3f3521b88339bcb0ca7e4044582ccf09\"\u003e\u003ccode\u003e702afa5\u003c/code\u003e\u003c/a\u003e [ENH] add query config on collection configuration, splade, and bm25 efs (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/4901\"\u003e#4901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecf954c1a7ab47c1b377c1639ea0be5b220e50d9\"\u003e\u003ccode\u003eecf954c\u003c/code\u003e\u003c/a\u003e [CHORE]  Remove from k8s anything relating to go logservice. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/56d3b3960c2a353f7e80ee0e0ae320cef6acb63c\"\u003e\u003ccode\u003e56d3b39\u003c/code\u003e\u003c/a\u003e [ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5480\"\u003e#5480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.118.0\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.118.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for \u003ccode\u003eStreamingResponse\u003c/code\u003es with dependencies with \u003ccode\u003eyield\u003c/code\u003e or \u003ccode\u003eUploadFile\u003c/code\u003es, close after the response is done. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14099\"\u003e#14099\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\u003cp\u003eBefore FastAPI 0.118.0, if you used a dependency with \u003ccode\u003eyield\u003c/code\u003e, it would run the exit code after the \u003cem\u003epath operation function\u003c/em\u003e returned but right before sending the response.\u003c/p\u003e\n\u003cp\u003eThis change also meant that if you returned a \u003ccode\u003eStreamingResponse\u003c/code\u003e, the exit code of the dependency with \u003ccode\u003eyield\u003c/code\u003e would have been already run.\u003c/p\u003e\n\u003cp\u003eFor example, if you had a database session in a dependency with \u003ccode\u003eyield\u003c/code\u003e, the \u003ccode\u003eStreamingResponse\u003c/code\u003e would not be able to use that session while streaming data because the session would have already been closed in the exit code after \u003ccode\u003eyield\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis behavior was reverted in 0.118.0, to make the exit code after \u003ccode\u003eyield\u003c/code\u003e be executed after the response is sent.\u003c/p\u003e\n\u003cp\u003eYou can read more about it in the docs for \u003ca href=\"https://fastapi.tiangolo.com/advanced/advanced-dependencies#dependencies-with-yield-httpexception-except-and-background-tasks\"\u003eAdvanced Dependencies - Dependencies with \u003ccode\u003eyield\u003c/code\u003e, \u003ccode\u003eHTTPException\u003c/code\u003e, \u003ccode\u003eexcept\u003c/code\u003e and Background Tasks\u003c/a\u003e. Including what you could do if you wanted to close a database session earlier, before returning the response to the client.\u003c/p\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update \u003ccode\u003etutorial/security/oauth2-jwt/\u003c/code\u003e to use \u003ccode\u003epwdlib\u003c/code\u003e with Argon2 instead of \u003ccode\u003epasslib\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13917\"\u003e#13917\u003c/a\u003e by \u003ca href=\"https://github.com/Neizvestnyj\"\u003e\u003ccode\u003e@​Neizvestnyj\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix typos in OAuth2 password request forms. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14112\"\u003e#14112\u003c/a\u003e by \u003ca href=\"https://github.com/alv2017\"\u003e\u003ccode\u003e@​alv2017\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update contributing guidelines for installing requirements. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14095\"\u003e#14095\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🌐 Sync German docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14098\"\u003e#14098\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14103\"\u003e#14103\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Refactor sponsor image handling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14102\"\u003e#14102\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🐛 Fix sponsor display issue by hiding element on image error. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14097\"\u003e#14097\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🐛 Hide sponsor badge when sponsor image is not displayed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14096\"\u003e#14096\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\u003ch2\u003e0.117.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error when \u003ccode\u003eFile\u003c/code\u003e is declared after \u003ccode\u003eForm\u003c/code\u003e parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11194\"\u003e#11194\u003c/a\u003e by \u003ca href=\"https://github.com/thomasleveil\"\u003e\u003ccode\u003e@​thomasleveil\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.117.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨  Allow \u003ccode\u003eNone\u003c/code\u003e as return type for bodiless responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9425\"\u003e#9425\u003c/a\u003e by \u003ca href=\"https://github.com/hofrob\"\u003e\u003ccode\u003e@​hofrob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow array values for OpenAPI schema \u003ccode\u003etype\u003c/code\u003e field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13639\"\u003e#13639\u003c/a\u003e by \u003ca href=\"https://github.com/sammasak\"\u003e\u003ccode\u003e@​sammasak\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add OpenAPI \u003ccode\u003eexternal_docs\u003c/code\u003e parameter to \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13713\"\u003e#13713\u003c/a\u003e by \u003ca href=\"https://github.com/cmtoro\"\u003e\u003ccode\u003e@​cmtoro\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⚡️ Fix \u003ccode\u003edefault_factory\u003c/code\u003e for response model field with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9704\"\u003e#9704\u003c/a\u003e by \u003ca href=\"https://github.com/vvanglro\"\u003e\u003ccode\u003e@​vvanglro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix inconsistent processing of model docstring formfeed char with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/6039\"\u003e#6039\u003c/a\u003e by \u003ca href=\"https://github.com/MaxwellPayne\"\u003e\u003ccode\u003e@​MaxwellPayne\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003ejsonable_encoder\u003c/code\u003e alters \u003ccode\u003ejson_encoders\u003c/code\u003e of Pydantic v1 objects. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/4972\"\u003e#4972\u003c/a\u003e by \u003ca href=\"https://github.com/aboubacs\"\u003e\u003ccode\u003e@​aboubacs\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/...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"},{"uuid":"3457691767","node_id":"PR_kwDOOaPssc6quNxr","number":53,"state":"open","title":"Bump the python-packages group across 1 directory with 70 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-26T13:30:23.000Z","updated_at":"2025-09-29T13:59:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":70,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.117.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.1","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.9","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.2","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the python-packages group with 70 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.117.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.1` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.9` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.2` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\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/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.9.2\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.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.0.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: fix high cardinality compaction metrics by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5461\"\u003echroma-core/chroma#5461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  A control interface for GC. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5218\"\u003echroma-core/chroma#5218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] remove tilt_config.yaml by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5440\"\u003echroma-core/chroma#5440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Bump min stack size because it encounters stack overflow otherwise (rare) by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5463\"\u003echroma-core/chroma#5463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.0.15 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5464\"\u003echroma-core/chroma#5464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Remove \u003ccode\u003erc/**-**-**\u003c/code\u003e branch trigger-deploy workflow by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5465\"\u003echroma-core/chroma#5465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] [REVERT]: mark search API not implemented by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5466\"\u003echroma-core/chroma#5466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make rank expr operational in search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5429\"\u003echroma-core/chroma#5429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement idf modifier for BM25 index by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5442\"\u003echroma-core/chroma#5442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[TST] Extend property test for seach endpoint by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5443\"\u003echroma-core/chroma#5443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Box all large futures. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5467\"\u003echroma-core/chroma#5467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] add warp documentation for mcp server by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5468\"\u003echroma-core/chroma#5468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve metrics for S3. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5459\"\u003echroma-core/chroma#5459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Search API cleanup by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5451\"\u003echroma-core/chroma#5451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update to use new deploy workflow inputs by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5471\"\u003echroma-core/chroma#5471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add new methods to ClientManager by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Validate metadata and sparse vector by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5469\"\u003echroma-core/chroma#5469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Quota search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5470\"\u003echroma-core/chroma#5470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Support id filter in where clause by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5472\"\u003echroma-core/chroma#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add overview to intro and tweak one sentence by \u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  ScoutLogs issues a HEAD if possible. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5376\"\u003echroma-core/chroma#5376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] increase cloud quotas in docs + defaults by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5477\"\u003echroma-core/chroma#5477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChroma \u0026lt;\u0026gt; mem0 by \u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5480\"\u003echroma-core/chroma#5480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Remove from k8s anything relating to go logservice. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5441\"\u003echroma-core/chroma#5441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add query config on collection configuration, splade, and bm25 efs by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4901\"\u003echroma-core/chroma#4901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Remove unneeded assigned_node method by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5479\"\u003echroma-core/chroma#5479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Perform read-repair on collections that get written to but have a crash before manifest write. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5476\"\u003echroma-core/chroma#5476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove forked code path for pull logs. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5460\"\u003echroma-core/chroma#5460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] - Adds typescript basics video by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5481\"\u003echroma-core/chroma#5481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Log a metric to track when the log needs to purge dirty. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5482\"\u003echroma-core/chroma#5482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove the go log service code and Docker. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5448\"\u003echroma-core/chroma#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5484\"\u003echroma-core/chroma#5484\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/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.21...1.1.0\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.21...1.1.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/chroma-core/chroma/commit/0bd2f46997ab6b9cd166c5ec3b9ea91fcb9c7b2b\"\u003e\u003ccode\u003e0bd2f46\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4299e646a0cacf5749a12645cf79b015d42c4acf\"\u003e\u003ccode\u003e4299e64\u003c/code\u003e\u003c/a\u003e [CLN]  Remove the go log service code and Docker. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5448\"\u003e#5448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/85c139d33bc5004771f86f33412bada014fb07ef\"\u003e\u003ccode\u003e85c139d\u003c/code\u003e\u003c/a\u003e [CHORE]  Log a metric to track when the log needs to purge dirty. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/07466d2ec8419f3c08d698a724f72e81a4f9be54\"\u003e\u003ccode\u003e07466d2\u003c/code\u003e\u003c/a\u003e [DOC] - Adds typescript basics video (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/664a3b20542054a4df5585751eb4c93d42d32d70\"\u003e\u003ccode\u003e664a3b2\u003c/code\u003e\u003c/a\u003e [CLN]  Remove forked code path for pull logs. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f12f3d460055402966ffe4df3e0d355dfbd32b9\"\u003e\u003ccode\u003e2f12f3d\u003c/code\u003e\u003c/a\u003e [BUG]  Perform read-repair on collections that get written to but have a cras...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/204379bb602a3468bdcc380609ca66d3cbafc89e\"\u003e\u003ccode\u003e204379b\u003c/code\u003e\u003c/a\u003e [CHORE] Remove unneeded assigned_node method (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5479\"\u003e#5479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/702afa5b3f3521b88339bcb0ca7e4044582ccf09\"\u003e\u003ccode\u003e702afa5\u003c/code\u003e\u003c/a\u003e [ENH] add query config on collection configuration, splade, and bm25 efs (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/4901\"\u003e#4901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecf954c1a7ab47c1b377c1639ea0be5b220e50d9\"\u003e\u003ccode\u003eecf954c\u003c/code\u003e\u003c/a\u003e [CHORE]  Remove from k8s anything relating to go logservice. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/56d3b3960c2a353f7e80ee0e0ae320cef6acb63c\"\u003e\u003ccode\u003e56d3b39\u003c/code\u003e\u003c/a\u003e [ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5480\"\u003e#5480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.117.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.117.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error when \u003ccode\u003eFile\u003c/code\u003e is declared after \u003ccode\u003eForm\u003c/code\u003e parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11194\"\u003e#11194\u003c/a\u003e by \u003ca href=\"https://github.com/thomasleveil\"\u003e\u003ccode\u003e@​thomasleveil\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.117.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨  Allow \u003ccode\u003eNone\u003c/code\u003e as return type for bodiless responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9425\"\u003e#9425\u003c/a\u003e by \u003ca href=\"https://github.com/hofrob\"\u003e\u003ccode\u003e@​hofrob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow array values for OpenAPI schema \u003ccode\u003etype\u003c/code\u003e field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13639\"\u003e#13639\u003c/a\u003e by \u003ca href=\"https://github.com/sammasak\"\u003e\u003ccode\u003e@​sammasak\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add OpenAPI \u003ccode\u003eexternal_docs\u003c/code\u003e parameter to \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13713\"\u003e#13713\u003c/a\u003e by \u003ca href=\"https://github.com/cmtoro\"\u003e\u003ccode\u003e@​cmtoro\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⚡️ Fix \u003ccode\u003edefault_factory\u003c/code\u003e for response model field with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9704\"\u003e#9704\u003c/a\u003e by \u003ca href=\"https://github.com/vvanglro\"\u003e\u003ccode\u003e@​vvanglro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix inconsistent processing of model docstring formfeed char with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/6039\"\u003e#6039\u003c/a\u003e by \u003ca href=\"https://github.com/MaxwellPayne\"\u003e\u003ccode\u003e@​MaxwellPayne\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003ejsonable_encoder\u003c/code\u003e alters \u003ccode\u003ejson_encoders\u003c/code\u003e of Pydantic v1 objects. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/4972\"\u003e#4972\u003c/a\u003e by \u003ca href=\"https://github.com/aboubacs\"\u003e\u003ccode\u003e@​aboubacs\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Reenable \u003ccode\u003eallow_arbitrary_types\u003c/code\u003e when only 1 argument is used on the API endpoint. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13694\"\u003e#13694\u003c/a\u003e by \u003ca href=\"https://github.com/rmawatson\"\u003e\u003ccode\u003e@​rmawatson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003einspect.getcoroutinefunction()\u003c/code\u003e can break testing with \u003ccode\u003eunittest.mock.patch()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14022\"\u003e#14022\u003c/a\u003e by \u003ca href=\"https://github.com/secrett2633\"\u003e\u003ccode\u003e@​secrett2633\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Create \u003ccode\u003edependency-cache\u003c/code\u003e dict in \u003ccode\u003esolve_dependencies\u003c/code\u003e only if \u003ccode\u003eNone\u003c/code\u003e (don't re-create if empty). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13689\"\u003e#13689\u003c/a\u003e by \u003ca href=\"https://github.com/bokshitsky\"\u003e\u003ccode\u003e@​bokshitsky\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Enable test case for duplicated headers in \u003ccode\u003etest_tutorial/test_header_params/test_tutorial003.py\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13864\"\u003e#13864\u003c/a\u003e by \u003ca href=\"https://github.com/Amogha-ark\"\u003e\u003ccode\u003e@​Amogha-ark\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📌 Pin \u003ccode\u003ehttpx\u003c/code\u003e to \u003ccode\u003e\u0026gt;=0.23.0,\u0026lt;1.0.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14086\"\u003e#14086\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\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add note about Cookies and JavaScript on \u003ccode\u003etutorial/cookie-params.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13510\"\u003e#13510\u003c/a\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Remove outdated formatting from \u003ccode\u003epath-params-numeric-validations.md\u003c/code\u003e for languages \u003ccode\u003een\u003c/code\u003e, \u003ccode\u003ees\u003c/code\u003e and \u003ccode\u003euk\u003c/code\u003e.. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14059\"\u003e#14059\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix and Improve English Documentation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14048\"\u003e#14048\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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📝 Update prompts and German translation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14015\"\u003e#14015\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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✅ Simplify tests for response_model. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14062\"\u003e#14062\u003c/a\u003e by \u003ca href=\"https://github.com/dynamicy\"\u003e\u003ccode\u003e@​dynamicy\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🚨 Install pydantic.mypy plugin. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14081\"\u003e#14081\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Add LLM test file. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14049\"\u003e#14049\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Update translations script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13968\"\u003e#13968\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 \u003ccode\u003edocs.py generate-readme\u003c/code\u003e command to remove permalinks from headers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14055\"\u003e#14055\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 mypy to 1.14.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12970\"\u003e#12970\u003c/a\u003e by \u003ca href=\"https://github....\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"},{"uuid":"3442773217","node_id":"PR_kwDOHUSeqs6p8Ooe","number":434,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T21:06:13.000Z","updated_at":"2025-09-22T22:23:45.823Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":17,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.23","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.2","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.23` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.0` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.2` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.23\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\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.23/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.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/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/commit/53572f6532876fde279abfa63a47c056dc485540\"\u003e\u003ccode\u003e53572f6\u003c/code\u003e\u003c/a\u003e Update uv lock file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/3b5a65f1431eb2b17957af05b41ebc031d894d68\"\u003e\u003ccode\u003e3b5a65f\u003c/code\u003e\u003c/a\u003e version changes for v6.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/6b7565b594a0640f4181f4d1a027c1235f8eff7c\"\u003e\u003ccode\u003e6b7565b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5318\"\u003e#5318\u003c/a\u003e from plotly/update-plotlyjs-3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c2225b79f337bb4ae42268d50fb2d77c1ccd684f\"\u003e\u003ccode\u003ec2225b7\u003c/code\u003e\u003c/a\u003e add DeprecationWarning for upcoming change in locationmode 'country names'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/deef7a3345e42374ef16d181beb3922d38631343\"\u003e\u003ccode\u003edeef7a3\u003c/code\u003e\u003c/a\u003e update plotly/labextension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/0589b229076c3c75ad40fa3875f276e1e5e7dfe8\"\u003e\u003ccode\u003e0589b22\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/694b0366419228b05b67ee6f34ee2d1c53734360\"\u003e\u003ccode\u003e694b036\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5308\"\u003e#5308\u003c/a\u003e from plotly/update-doc-string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/480a1aff40c631fdd34df16e50beb75debdce60b\"\u003e\u003ccode\u003e480a1af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5287\"\u003e#5287\u003c/a\u003e from jdbeel/update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c07de25a169eb36bc895755be1cfcb79fcada21f\"\u003e\u003ccode\u003ec07de25\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/9f4b774e783c9eea70fcc9631a18d107ea3fe845\"\u003e\u003ccode\u003e9f4b774\u003c/code\u003e\u003c/a\u003e Update _json.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\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/pandas-dev/pandas/commit/4665c10899bc413b639194f6fb8665a5c70f7db5\"\u003e\u003ccode\u003e4665c10\u003c/code\u003e\u003c/a\u003e RLS: 2.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/633c68b91808441eba7d73b630a82b713ba19da8\"\u003e\u003ccode\u003e633c68b\u003c/code\u003e\u003c/a\u003e DOC: fix syntax in whatsnew file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/456ad4702cb017aab36e2d09a4029b1b085198f5\"\u003e\u003ccode\u003e456ad47\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62152\"\u003e#62152\u003c/a\u003e on branch 2.3.x (DOC: prepare 2.3.2 whatsnew notes for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6cae6444444ed7943ceffbd5990cd8249dd5b47c\"\u003e\u003ccode\u003e6cae644\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: move and reword whatsnew note for replace fix (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/57865\"\u003eGH-57865\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/a91c50a58c372cddf104fd60241c7284bbf8fc80\"\u003e\u003ccode\u003ea91c50a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62147\"\u003e#62147\u003c/a\u003e on branch 2.3.x (DOC: correct and rewrite string migration...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f7a2cfdf2ed08016167ae6c5e577c54949a849b2\"\u003e\u003ccode\u003ef7a2cfd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG/DEPR: logical operation with bool and string (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/61995\"\u003e#61995\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/7981a43db4339826a3ce5020e9b1b931e604e5bd\"\u003e\u003ccode\u003e7981a43\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62124\"\u003e#62124\u003c/a\u003e on branch 2.3.x (CI/BLD: don't use strict xfail for '%m.%Y...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/fafbcbd03d1721830f4df8255abdab341db2a583\"\u003e\u003ccode\u003efafbcbd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG(CoW): also raise for chained assignment for .at / .iat (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3ac64a714886d917ca24ba637a85c4aaf563fc1b\"\u003e\u003ccode\u003e3ac64a7\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: Fix Series.str.contains with compiled regex on Arrow st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/1f2dc4fd8a2503773b6f90cb5e8cc5c3172c3c11\"\u003e\u003ccode\u003e1f2dc4f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix Series.str.fullmatch() and Series.str.match() with ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.3.0...v2.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.26.0 to 4.30.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.30.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.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/tox-dev/tox/pull/3603\"\u003etox-dev/tox#3603\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure automatically provisioned environment is torn down by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3601\"\u003etox-dev/tox#3601\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows 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/tox-dev/tox/pull/3604\"\u003etox-dev/tox#3604\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.1...4.30.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.30.1...4.30.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.30.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Tox from hanging with \u003ccode\u003e--installpkg\u003c/code\u003e sdist due to orphaned build backend by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\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/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.0...4.30.1...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/434","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/434","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/434/packages"},{"uuid":"2809784005","node_id":"PR_kwDOKF4tPs6neebF","number":2453,"state":"open","title":"Build: Bump mmh3 from 5.1.0 to 5.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-08T22:21:15.000Z","updated_at":"2025-09-09T14:03:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Build: Bump","packages":[{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [mmh3](https://github.com/hajimes/mmh3) from 5.1.0 to 5.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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=mmh3\u0026package-manager=pip\u0026previous-version=5.1.0\u0026new-version=5.2.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/apache/iceberg-python/pull/2453","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Ficeberg-python/issues/2453","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2453/packages"},{"uuid":"2808326323","node_id":"PR_kwDOOaPssc6nY6iz","number":51,"state":"open","title":"Bump the python-packages group across 1 directory with 67 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-08T13:40:51.000Z","updated_at":"2025-09-08T13:40:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":67,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.1","repository_url":"https://github.com/django/asgiref"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.0.20","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.116.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.74.0","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.34.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.1","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.106.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.4","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.7","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.1","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.47.3","repository_url":"https://github.com/encode/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.0","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.1","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.17.4","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.35.0","repository_url":"https://github.com/encode/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 67 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.0.20` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.116.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.74.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.34.4` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.10.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.106.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.57b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.4` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.7` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/encode/starlette) | `0.46.2` | `0.47.3` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.1` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.17.4` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/encode/uvicorn) | `0.34.2` | `0.35.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.10.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\nof asyncio's\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e\nAPI on Python 3.14 or later\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can\nsuppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise.\n(\u003ccode\u003e[#913](https://github.com/agronholm/anyio/issues/913) \u0026lt;https://github.com/agronholm/anyio/pull/913\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover\nonly occurs when the buffer size exceeds \u003ccode\u003emax_size\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/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.9.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.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b126e0c01144bd980937b658dd6eaf236150fe63\"\u003e\u003ccode\u003eb126e0c\u003c/code\u003e\u003c/a\u003e Removed unneeded typing workaround (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef1678a65b891ef838525d1f3a658875acb9018a\"\u003e\u003ccode\u003eef1678a\u003c/code\u003e\u003c/a\u003e Migrate work for finished \u003ccode\u003eCurrentThreadExecutor\u003c/code\u003e to previous executor (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/37870f58963c38617a910743ba69311ec8e4e0d0\"\u003e\u003ccode\u003e37870f5\u003c/code\u003e\u003c/a\u003e Fixed reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ec6f666621407674e80d039bf235ba2662193bdb\"\u003e\u003ccode\u003eec6f666\u003c/code\u003e\u003c/a\u003e Add MicroPie framework to \u003ccode\u003eimplementations.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/5eff04dce46b74172a1d6d1c5b02409f0afe33b6\"\u003e\u003ccode\u003e5eff04d\u003c/code\u003e\u003c/a\u003e Lazily bind ApplicationCommunicator to event loop (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.0.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.20\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.20\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.20\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T17:04\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.20.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[RELEASE] 1.0.20 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5303\"\u003echroma-core/chroma#5303\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.0.18\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.18\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.18\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T08:09\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.18.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHORE]: Added short descriptions to CLI commands by \u003ca href=\"https://github.com/tazarov\"\u003e\u003ccode\u003e@​tazarov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5217\"\u003echroma-core/chroma#5217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use AVX in distance calculations by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5258\"\u003echroma-core/chroma#5258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Auto-set tenant, scoped database in python CloudClient by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5026\"\u003echroma-core/chroma#5026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[PERF]: Modify get_range to return an iterator by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5256\"\u003echroma-core/chroma#5256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Mark dirty on rollback of cursor to guarantee compaction picks it up. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5265\"\u003echroma-core/chroma#5265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add metric for component queue depth \u0026amp; change dispatcher queue depth metric buckets by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5261\"\u003echroma-core/chroma#5261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add garbage collection CLI for manual garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5250\"\u003echroma-core/chroma#5250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Clean up DEVELOP.md by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5270\"\u003echroma-core/chroma#5270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Further optimize query on getCollections when databases pkey is fully specified by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5268\"\u003echroma-core/chroma#5268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Rust to allow build with AVX when flag is set by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5269\"\u003echroma-core/chroma#5269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Fix test_add flake by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5272\"\u003echroma-core/chroma#5272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert \u0026quot;[ENH]: Further optimize query on getCollections when databases pkey is fully specified (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5268\"\u003e#5268\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5273\"\u003echroma-core/chroma#5273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add maturin to dev dependencies by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5271\"\u003echroma-core/chroma#5271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Optimize GetCollections and remove usage of raw gorm by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5274\"\u003echroma-core/chroma#5274\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add config param to garbage collector to control how many collections are fetched from SysDb by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5275\"\u003echroma-core/chroma#5275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Reject version files without paths. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5267\"\u003echroma-core/chroma#5267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Enable getting a collection by CRN by \u003ca href=\"https://github.com/drewkim\"\u003e\u003ccode\u003e@​drewkim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5244\"\u003echroma-core/chroma#5244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] CompactionError did not proxy should_trace_error by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5282\"\u003echroma-core/chroma#5282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Resolve deadlock in system crate? by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5283\"\u003echroma-core/chroma#5283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Complete the NAC metrics for the write half. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5278\"\u003echroma-core/chroma#5278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: fix missing node in constructed version graph for garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5284\"\u003echroma-core/chroma#5284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix test flake from 5283. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5287\"\u003echroma-core/chroma#5287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Don't GC hnsw if it is empty by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5295\"\u003echroma-core/chroma#5295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Sync before flushing by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5296\"\u003echroma-core/chroma#5296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota limits by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5297\"\u003echroma-core/chroma#5297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix CLI copy offset by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5288\"\u003echroma-core/chroma#5288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add support for default space in create coll config by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5293\"\u003echroma-core/chroma#5293\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/chroma-core/chroma/commit/b6b059dfd71525f9abad931ec30063bae177696f\"\u003e\u003ccode\u003eb6b059d\u003c/code\u003e\u003c/a\u003e [RELEASE] 1.0.20 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5303\"\u003e#5303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/1993cd4a515b40faac8e2c7c7d65526445959f0b\"\u003e\u003ccode\u003e1993cd4\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.8, Python 1.0.19, JS 3.0.14 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5302\"\u003e#5302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/19600af2796fffbe1781ef486ee324851877f88f\"\u003e\u003ccode\u003e19600af\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy arg number types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5301\"\u003e#5301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d3602cd776b2e3716ba3c9685a6571c1933489bc\"\u003e\u003ccode\u003ed3602cd\u003c/code\u003e\u003c/a\u003e [CHORE] Update JS binding deps in the client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5300\"\u003e#5300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2570b471edc5a47fc271eddfa37d8e4236ac0f21\"\u003e\u003ccode\u003e2570b47\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.7, Python 1.0.18, JS 3.0.13 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5299\"\u003e#5299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/51a7d1625b3b41083891f1c600e15131a321ae5e\"\u003e\u003ccode\u003e51a7d16\u003c/code\u003e\u003c/a\u003e [ENH] Add support for default space in create coll config (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5293\"\u003e#5293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/163133aacc9dab8a9e7d871db031d6e159ea1322\"\u003e\u003ccode\u003e163133a\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy offset (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5288\"\u003e#5288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f06586503be2603d49bd47c1315001460dac947\"\u003e\u003ccode\u003e2f06586\u003c/code\u003e\u003c/a\u003e [DOC] update quota limits (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5297\"\u003e#5297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/983728076d253409791709d5dbbed0657e30b6d9\"\u003e\u003ccode\u003e9837280\u003c/code\u003e\u003c/a\u003e [ENH] Sync before flushing (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5296\"\u003e#5296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/649e14c530fe46b0e5dec84ce2f5b25a28b79a2e\"\u003e\u003ccode\u003e649e14c\u003c/code\u003e\u003c/a\u003e [BUG]: Don't GC hnsw if it is empty (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5295\"\u003e#5295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.0.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.116.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.116.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13884\"\u003e#13884\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📝 Add notification about impending changes in Translations to \u003ccode\u003edocs/en/docs/contributing.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13886\"\u003e#13886\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13871\"\u003e#13871\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.116.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for deploying to FastAPI Cloud with \u003ccode\u003efastapi deploy\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13870\"\u003e#13870\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\u003cp\u003eInstalling \u003ccode\u003efastapi[standard]\u003c/code\u003e now includes \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis will allow you to deploy to \u003ca href=\"https://fastapicloud.com\"\u003eFastAPI Cloud\u003c/a\u003e with the \u003ccode\u003efastapi deploy\u003c/code\u003e command.\u003c/p\u003e\n\u003cp\u003eIf you want to install \u003ccode\u003efastapi\u003c/code\u003e with the standard dependencies but without \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e, you can install instead \u003ccode\u003efastapi[standard-no-fastapi-cloud-cli]\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13801\"\u003e#13801\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/additional-status-codes.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13799\"\u003e#13799\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Ukrainian translation for \u003ccode\u003edocs/uk/docs/tutorial/body-updates.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13804\"\u003e#13804\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\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 pillow from 11.1.0 to 11.3.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13852\"\u003e#13852\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 FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13846\"\u003e#13846\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13848\"\u003e#13848\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 mkdocs-material from 9.6.1 to 9.6.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13849\"\u003e#13849\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13843\"\u003e#13843\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13845\"\u003e#13845\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.115.14\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for unions when using \u003ccode\u003eForm\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13827\"\u003e#13827\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\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✏️ Fix grammar mistake in \u003ccode\u003edocs/en/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13800\"\u003e#13800\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Speakeasy URL to Speakeasy Sandbox. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13697\"\u003e#13697\u003c/a\u003e by \u003ca href=\"https://github.com/ndimares\"\u003e\u003ccode\u003e@​ndimares\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\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/fastapi/fastapi/commit/313723494be79d4b24ccaa60e4f6d1f96c150fed\"\u003e\u003ccode\u003e3137234\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/095dab00c7d7bb3fc5d02da159207d56ac5bc1ea\"\u003e\u003ccode\u003e095dab0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cad6880fd97d6f25d3f05025c88230285386e7f9\"\u003e\u003ccode\u003ecad6880\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13884\"\u003e#13884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a6e79e68a438c3e1f2ff628254d433832f73df53\"\u003e\u003ccode\u003ea6e79e6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c13b1ba4bce313d68f2ebd562b9b0c3267f5158\"\u003e\u003ccode\u003e2c13b1b\u003c/code\u003e\u003c/a\u003e 📝 Add notification about impending changes in Translations to `docs/en/docs/c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7179d48fd774bcbc5f5013bb8f4df61b8c36795f\"\u003e\u003ccode\u003e7179d48\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/07bcb18a5a2ddab8282f4a9d50f63f3c9f46ca8c\"\u003e\u003ccode\u003e07bcb18\u003c/code\u003e\u003c/a\u003e ⬆ [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13871\"\u003e#13871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd8f358fd93416835b06486566b9d9ab991577b6\"\u003e\u003ccode\u003ebd8f358\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/18eb7a708096ab7a19f31a59918bc010aba0ddba\"\u003e\u003ccode\u003e18eb7a7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dd906a998ee2aa41cba98edf13364b34fdc9b1c1\"\u003e\u003ccode\u003edd906a9\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.115.12...0.116.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.18.0 to 3.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd 3.14t (free threading) to matrix by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/434\"\u003etox-dev/filelock#434\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/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for 3.14 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/432\"\u003etox-dev/filelock#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d1009f08a6a64624fad91d1079062ef31b8c2b4\"\u003e\u003ccode\u003e8d1009f\u003c/code\u003e\u003c/a\u003e Update release.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66a428e97a874b44b0310072f6c974226f55a472\"\u003e\u003ccode\u003e66a428e\u003c/code\u003e\u003c/a\u003e Increase test coverage (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0dfc86eebd2c76ae959a409bcbc3112cc1ec5890\"\u003e\u003ccode\u003e0dfc86e\u003c/code\u003e\u003c/a\u003e add 3.14 to matrix (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0c54837e318ebe8a692b529722430cb38134bf7c\"\u003e\u003ccode\u003e0c54837\u003c/code\u003e\u003c/a\u003e Add support for 3.14 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/77d02f5ada3a1a92167b1beee35a7815cbde0fcf\"\u003e\u003ccode\u003e77d02f5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/bc972b33bf253bb9f08db32b19ffd4119a74706e\"\u003e\u003ccode\u003ebc972b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/78d02cb5ff42b22a56ad1a36755361a6b4601765\"\u003e\u003ccode\u003e78d02cb\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/18cdb5d1c78a7a459463480303e9820f33cdf041\"\u003e\u003ccode\u003e18cdb5d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/b198a096d2bae58596479497d18a82bbeec515c8\"\u003e\u003ccode\u003eb198a09\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/6b097e76de603d9be6a24c5058b6fe53ef003afd\"\u003e\u003ccode\u003e6b097e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.18.0...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2025.3.2 to 2025.9.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/f84b99f0d1f079f990db1a219b74df66ab3e7160\"\u003e\u003ccode\u003ef84b99f\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1912\"\u003e#1912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/4e5f7686874953e9130891feb2fac69277ab4ad1\"\u003e\u003ccode\u003e4e5f768\u003c/code\u003e\u003c/a\u003e Feature, Add a lookup of Last-Modified in http file headers (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1909\"\u003e#1909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/cf798ec684e0583906dda1ae6ff40de620c01eca\"\u003e\u003ccode\u003ecf798ec\u003c/code\u003e\u003c/a...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/packages"},{"uuid":"3363583023","node_id":"PR_kwDOOaPssc6l0hfF","number":50,"state":"open","title":"Bump the python-packages group across 1 directory with 66 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-28T14:36:50.000Z","updated_at":"2025-09-08T13:36:25.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":66,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.1","repository_url":"https://github.com/django/asgiref"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.0.20","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.116.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.74.0","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.34.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.1","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.102.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.0","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.7","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.7.34","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.47.3","repository_url":"https://github.com/encode/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.21.4","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.55.4","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.16.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.35.0","repository_url":"https://github.com/encode/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 66 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.0.20` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.116.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.7.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.74.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.34.4` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.10.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.102.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.57b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.7` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.7.34` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/encode/starlette) | `0.46.2` | `0.47.3` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.21.4` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.55.4` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.16.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/encode/uvicorn) | `0.34.2` | `0.35.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.10.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\nof asyncio's\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e\nAPI on Python 3.14 or later\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can\nsuppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise.\n(\u003ccode\u003e[#913](https://github.com/agronholm/anyio/issues/913) \u0026lt;https://github.com/agronholm/anyio/pull/913\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover\nonly occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e\n(\u003ccode\u003e[#915](https://github.com/agronholm/anyio/issues/915) \u0026lt;https://github.com/agronholm/anyio/pull/915\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMigrated testing and documentation dependencies from extras to dependency groups\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/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.9.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.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b126e0c01144bd980937b658dd6eaf236150fe63\"\u003e\u003ccode\u003eb126e0c\u003c/code\u003e\u003c/a\u003e Removed unneeded typing workaround (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef1678a65b891ef838525d1f3a658875acb9018a\"\u003e\u003ccode\u003eef1678a\u003c/code\u003e\u003c/a\u003e Migrate work for finished \u003ccode\u003eCurrentThreadExecutor\u003c/code\u003e to previous executor (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/37870f58963c38617a910743ba69311ec8e4e0d0\"\u003e\u003ccode\u003e37870f5\u003c/code\u003e\u003c/a\u003e Fixed reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ec6f666621407674e80d039bf235ba2662193bdb\"\u003e\u003ccode\u003eec6f666\u003c/code\u003e\u003c/a\u003e Add MicroPie framework to \u003ccode\u003eimplementations.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/5eff04dce46b74172a1d6d1c5b02409f0afe33b6\"\u003e\u003ccode\u003e5eff04d\u003c/code\u003e\u003c/a\u003e Lazily bind ApplicationCommunicator to event loop (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.0.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.20\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.20\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.20\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T17:04\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.20.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[RELEASE] 1.0.20 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5303\"\u003echroma-core/chroma#5303\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.0.18\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.18\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.18\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T08:09\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.18.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHORE]: Added short descriptions to CLI commands by \u003ca href=\"https://github.com/tazarov\"\u003e\u003ccode\u003e@​tazarov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5217\"\u003echroma-core/chroma#5217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use AVX in distance calculations by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5258\"\u003echroma-core/chroma#5258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Auto-set tenant, scoped database in python CloudClient by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5026\"\u003echroma-core/chroma#5026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[PERF]: Modify get_range to return an iterator by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5256\"\u003echroma-core/chroma#5256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Mark dirty on rollback of cursor to guarantee compaction picks it up. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5265\"\u003echroma-core/chroma#5265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add metric for component queue depth \u0026amp; change dispatcher queue depth metric buckets by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5261\"\u003echroma-core/chroma#5261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add garbage collection CLI for manual garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5250\"\u003echroma-core/chroma#5250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Clean up DEVELOP.md by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5270\"\u003echroma-core/chroma#5270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Further optimize query on getCollections when databases pkey is fully specified by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5268\"\u003echroma-core/chroma#5268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Rust to allow build with AVX when flag is set by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5269\"\u003echroma-core/chroma#5269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Fix test_add flake by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5272\"\u003echroma-core/chroma#5272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert \u0026quot;[ENH]: Further optimize query on getCollections when databases pkey is fully specified (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5268\"\u003e#5268\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5273\"\u003echroma-core/chroma#5273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add maturin to dev dependencies by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5271\"\u003echroma-core/chroma#5271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Optimize GetCollections and remove usage of raw gorm by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5274\"\u003echroma-core/chroma#5274\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add config param to garbage collector to control how many collections are fetched from SysDb by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5275\"\u003echroma-core/chroma#5275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Reject version files without paths. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5267\"\u003echroma-core/chroma#5267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Enable getting a collection by CRN by \u003ca href=\"https://github.com/drewkim\"\u003e\u003ccode\u003e@​drewkim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5244\"\u003echroma-core/chroma#5244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] CompactionError did not proxy should_trace_error by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5282\"\u003echroma-core/chroma#5282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Resolve deadlock in system crate? by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5283\"\u003echroma-core/chroma#5283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Complete the NAC metrics for the write half. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5278\"\u003echroma-core/chroma#5278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: fix missing node in constructed version graph for garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5284\"\u003echroma-core/chroma#5284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix test flake from 5283. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5287\"\u003echroma-core/chroma#5287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Don't GC hnsw if it is empty by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5295\"\u003echroma-core/chroma#5295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Sync before flushing by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5296\"\u003echroma-core/chroma#5296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota limits by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5297\"\u003echroma-core/chroma#5297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix CLI copy offset by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5288\"\u003echroma-core/chroma#5288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add support for default space in create coll config by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5293\"\u003echroma-core/chroma#5293\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/chroma-core/chroma/commit/b6b059dfd71525f9abad931ec30063bae177696f\"\u003e\u003ccode\u003eb6b059d\u003c/code\u003e\u003c/a\u003e [RELEASE] 1.0.20 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5303\"\u003e#5303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/1993cd4a515b40faac8e2c7c7d65526445959f0b\"\u003e\u003ccode\u003e1993cd4\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.8, Python 1.0.19, JS 3.0.14 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5302\"\u003e#5302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/19600af2796fffbe1781ef486ee324851877f88f\"\u003e\u003ccode\u003e19600af\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy arg number types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5301\"\u003e#5301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d3602cd776b2e3716ba3c9685a6571c1933489bc\"\u003e\u003ccode\u003ed3602cd\u003c/code\u003e\u003c/a\u003e [CHORE] Update JS binding deps in the client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5300\"\u003e#5300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2570b471edc5a47fc271eddfa37d8e4236ac0f21\"\u003e\u003ccode\u003e2570b47\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.7, Python 1.0.18, JS 3.0.13 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5299\"\u003e#5299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/51a7d1625b3b41083891f1c600e15131a321ae5e\"\u003e\u003ccode\u003e51a7d16\u003c/code\u003e\u003c/a\u003e [ENH] Add support for default space in create coll config (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5293\"\u003e#5293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/163133aacc9dab8a9e7d871db031d6e159ea1322\"\u003e\u003ccode\u003e163133a\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy offset (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5288\"\u003e#5288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f06586503be2603d49bd47c1315001460dac947\"\u003e\u003ccode\u003e2f06586\u003c/code\u003e\u003c/a\u003e [DOC] update quota limits (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5297\"\u003e#5297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/983728076d253409791709d5dbbed0657e30b6d9\"\u003e\u003ccode\u003e9837280\u003c/code\u003e\u003c/a\u003e [ENH] Sync before flushing (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5296\"\u003e#5296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/649e14c530fe46b0e5dec84ce2f5b25a28b79a2e\"\u003e\u003ccode\u003e649e14c\u003c/code\u003e\u003c/a\u003e [BUG]: Don't GC hnsw if it is empty (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5295\"\u003e#5295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.0.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.116.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.116.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13884\"\u003e#13884\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📝 Add notification about impending changes in Translations to \u003ccode\u003edocs/en/docs/contributing.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13886\"\u003e#13886\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13871\"\u003e#13871\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.116.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for deploying to FastAPI Cloud with \u003ccode\u003efastapi deploy\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13870\"\u003e#13870\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\u003cp\u003eInstalling \u003ccode\u003efastapi[standard]\u003c/code\u003e now includes \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis will allow you to deploy to \u003ca href=\"https://fastapicloud.com\"\u003eFastAPI Cloud\u003c/a\u003e with the \u003ccode\u003efastapi deploy\u003c/code\u003e command.\u003c/p\u003e\n\u003cp\u003eIf you want to install \u003ccode\u003efastapi\u003c/code\u003e with the standard dependencies but without \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e, you can install instead \u003ccode\u003efastapi[standard-no-fastapi-cloud-cli]\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13801\"\u003e#13801\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/additional-status-codes.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13799\"\u003e#13799\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Ukrainian translation for \u003ccode\u003edocs/uk/docs/tutorial/body-updates.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13804\"\u003e#13804\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\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 pillow from 11.1.0 to 11.3.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13852\"\u003e#13852\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 FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13846\"\u003e#13846\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13848\"\u003e#13848\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 mkdocs-material from 9.6.1 to 9.6.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13849\"\u003e#13849\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13843\"\u003e#13843\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13845\"\u003e#13845\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.115.14\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for unions when using \u003ccode\u003eForm\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13827\"\u003e#13827\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\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✏️ Fix grammar mistake in \u003ccode\u003edocs/en/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13800\"\u003e#13800\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Speakeasy URL to Speakeasy Sandbox. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13697\"\u003e#13697\u003c/a\u003e by \u003ca href=\"https://github.com/ndimares\"\u003e\u003ccode\u003e@​ndimares\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\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/fastapi/fastapi/commit/313723494be79d4b24ccaa60e4f6d1f96c150fed\"\u003e\u003ccode\u003e3137234\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/095dab00c7d7bb3fc5d02da159207d56ac5bc1ea\"\u003e\u003ccode\u003e095dab0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cad6880fd97d6f25d3f05025c88230285386e7f9\"\u003e\u003ccode\u003ecad6880\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13884\"\u003e#13884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a6e79e68a438c3e1f2ff628254d433832f73df53\"\u003e\u003ccode\u003ea6e79e6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c13b1ba4bce313d68f2ebd562b9b0c3267f5158\"\u003e\u003ccode\u003e2c13b1b\u003c/code\u003e\u003c/a\u003e 📝 Add notification about impending changes in Translations to `docs/en/docs/c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7179d48fd774bcbc5f5013bb8f4df61b8c36795f\"\u003e\u003ccode\u003e7179d48\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/07bcb18a5a2ddab8282f4a9d50f63f3c9f46ca8c\"\u003e\u003ccode\u003e07bcb18\u003c/code\u003e\u003c/a\u003e ⬆ [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13871\"\u003e#13871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd8f358fd93416835b06486566b9d9ab991577b6\"\u003e\u003ccode\u003ebd8f358\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/18eb7a708096ab7a19f31a59918bc010aba0ddba\"\u003e\u003ccode\u003e18eb7a7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dd906a998ee2aa41cba98edf13364b34fdc9b1c1\"\u003e\u003ccode\u003edd906a9\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.115.12...0.116.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.18.0 to 3.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd 3.14t (free threading) to matrix by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/434\"\u003etox-dev/filelock#434\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/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for 3.14 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/432\"\u003etox-dev/filelock#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d1009f08a6a64624fad91d1079062ef31b8c2b4\"\u003e\u003ccode\u003e8d1009f\u003c/code\u003e\u003c/a\u003e Update release.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66a428e97a874b44b0310072f6c974226f55a472\"\u003e\u003ccode\u003e66a428e\u003c/code\u003e\u003c/a\u003e Increase test coverage (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0dfc86eebd2c76ae959a409bcbc3112cc1ec5890\"\u003e\u003ccode\u003e0dfc86e\u003c/code\u003e\u003c/a\u003e add 3.14 to matrix (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0c54837e318ebe8a692b529722430cb38134bf7c\"\u003e\u003ccode\u003e0c54837\u003c/code\u003e\u003c/a\u003e Add support for 3.14 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/77d02f5ada3a1a92167b1beee35a7815cbde0fcf\"\u003e\u003ccode\u003e77d02f5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/bc972b33bf253bb9f08db32b19ffd4119a74706e\"\u003e\u003ccode\u003ebc972b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/78d02cb5ff42b22a56ad1a36755361a6b4601765\"\u003e\u003ccode\u003e78d02cb\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/18cdb5d1c78a7a459463480303e9820f33cdf041\"\u003e\u003ccode\u003e18cdb5d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/b198a096d2bae58596479497d18a82bbeec515c8\"\u003e\u003ccode\u003eb198a09\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/6b097e76de603d9be6a24c5058b6fe53ef003afd\"\u003e\u003ccode\u003e6b097e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.18.0...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2025.3.2 to 2025.7.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/852f892f497940fc246d335a0ac7b3b3d93530fc\"\u003e\u003ccode\u003e852f892\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1891\"\u003e#1891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/97e5913518b4b11805394add1488ae93c62303cd\"\u003e\u003ccode\u003e97e5913\u003c/code\u003e\u003c/a\u003e Ruff legacy alias (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1887\"\u003e#1887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/57b7381ad92455ea0d4861e5e3531a77b823fc1f\"\u003e\u003ccode\u003e57b7381\u003c/code\u003e\u003c/a\u003e Remove any...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/50","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/50","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/50/packages"},{"uuid":"2775813235","node_id":"PR_kwDOHUSeqs6lc4xz","number":429,"state":"closed","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["approved","size/M","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":"2025-09-22T21:04:33.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-26T16:47:17.000Z","updated_at":"2025-09-22T21:04:33.000Z","time_to_close":2348236,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":15,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.0.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.28.4","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"6.2.1","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.5"},{"name":"mypy","old_version":"1.16.0","new_version":"1.17.1","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.3.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.0` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.0.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.28.4` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `6.2.1` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.5` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.17.1` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a check for partial response data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1487\"\u003e#1487\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7e0412a4fdfedcaa4683d5ef7d9155d5d58efa11\"\u003e7e0412a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trove classifier for Python 3.13 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require google-crc32c \u0026gt;= 1.1.3 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require protobuf \u0026gt;= 3.20.2, \u0026lt; 7.0.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require requests \u0026gt;= 2.22.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove setup.cfg configuration for creating universal wheels (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1448\"\u003e#1448\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d3b6b3f96a6f94aa7c371902f48d1363ae6bfb5c\"\u003ed3b6b3f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve issue where pre-release versions of dependencies are installed (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSegmentation fault in tink while writing data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1490\"\u003e#1490\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2a46c0b9e6ec561ae3151d2a9a80c7452634487e\"\u003e2a46c0b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove quickstart to top of readme (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1451\"\u003e#1451\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/53257cf20a4de3810156ae9576a7092f5527df98\"\u003e53257cf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README to break infinite redirect loop (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1450\"\u003e#1450\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/03f1594eb90ea1298a3a23927537c86ac35d33d5\"\u003e03f1594\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a check for partial response data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1487\"\u003e#1487\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7e0412a4fdfedcaa4683d5ef7d9155d5d58efa11\"\u003e7e0412a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trove classifier for Python 3.13 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require google-crc32c \u0026gt;= 1.1.3 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require protobuf \u0026gt;= 3.20.2, \u0026lt; 7.0.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require requests \u0026gt;= 2.22.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove setup.cfg configuration for creating universal wheels (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1448\"\u003e#1448\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d3b6b3f96a6f94aa7c371902f48d1363ae6bfb5c\"\u003ed3b6b3f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve issue where pre-release versions of dependencies are installed (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSegmentation fault in tink while writing data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1490\"\u003e#1490\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2a46c0b9e6ec561ae3151d2a9a80c7452634487e\"\u003e2a46c0b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove quickstart to top of readme (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1451\"\u003e#1451\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/53257cf20a4de3810156ae9576a7092f5527df98\"\u003e53257cf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README to break infinite redirect loop (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1450\"\u003e#1450\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/03f1594eb90ea1298a3a23927537c86ac35d33d5\"\u003e03f1594\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/googleapis/python-storage/commit/e84906c2252e98c2906d5d0e0da2249deb0c134a\"\u003e\u003ccode\u003ee84906c\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1508\"\u003e#1508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003e\u003ccode\u003ea29073c\u003c/code\u003e\u003c/a\u003e feat: add support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e\u003ccode\u003e6a9923e\u003c/code\u003e\u003c/a\u003e Fix: Add logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/083a505e1f43c20657570c74ec707485f4b3989d\"\u003e\u003ccode\u003e083a505\u003c/code\u003e\u003c/a\u003e chore: improve docs for list_files_with_prefix (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1517\"\u003e#1517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/61bd57509ab3966f4382656200f2600ce41cce24\"\u003e\u003ccode\u003e61bd575\u003c/code\u003e\u003c/a\u003e chore: remove duplicates in coveragerc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5964009c0efae9c84a9433715d74befca7ddf98d\"\u003e\u003ccode\u003e5964009\u003c/code\u003e\u003c/a\u003e chore: exclude autogenerated .coveragerc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1510\"\u003e#1510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0eb45b5a808ad149c1c85d1ab9ea693d7365d5c1\"\u003e\u003ccode\u003e0eb45b5\u003c/code\u003e\u003c/a\u003e feat: Add new field \u003ccode\u003econtexts\u003c/code\u003e for Object Contexts in message \u003ccode\u003eObject\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1502\"\u003e#1502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/edde9506af9c313036573e4e51d7b94d03c3118f\"\u003e\u003ccode\u003eedde950\u003c/code\u003e\u003c/a\u003e samples: add samples for move api to rename an object (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1505\"\u003e#1505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/500c0d07d3a239c3b52c9aa6ce434f5bb3202823\"\u003e\u003ccode\u003e500c0d0\u003c/code\u003e\u003c/a\u003e chore: fix the errors for GAPIC (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e\u003ccode\u003e72252e9\u003c/code\u003e\u003c/a\u003e docs: update the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.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/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/commit/53572f6532876fde279abfa63a47c056dc485540\"\u003e\u003ccode\u003e53572f6\u003c/code\u003e\u003c/a\u003e Update uv lock file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/3b5a65f1431eb2b17957af05b41ebc031d894d68\"\u003e\u003ccode\u003e3b5a65f\u003c/code\u003e\u003c/a\u003e version changes for v6.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/6b7565b594a0640f4181f4d1a027c1235f8eff7c\"\u003e\u003ccode\u003e6b7565b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5318\"\u003e#5318\u003c/a\u003e from plotly/update-plotlyjs-3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c2225b79f337bb4ae42268d50fb2d77c1ccd684f\"\u003e\u003ccode\u003ec2225b7\u003c/code\u003e\u003c/a\u003e add DeprecationWarning for upcoming change in locationmode 'country names'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/deef7a3345e42374ef16d181beb3922d38631343\"\u003e\u003ccode\u003edeef7a3\u003c/code\u003e\u003c/a\u003e update plotly/labextension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/0589b229076c3c75ad40fa3875f276e1e5e7dfe8\"\u003e\u003ccode\u003e0589b22\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/694b0366419228b05b67ee6f34ee2d1c53734360\"\u003e\u003ccode\u003e694b036\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5308\"\u003e#5308\u003c/a\u003e from plotly/update-doc-string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/480a1aff40c631fdd34df16e50beb75debdce60b\"\u003e\u003ccode\u003e480a1af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5287\"\u003e#5287\u003c/a\u003e from jdbeel/update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c07de25a169eb36bc895755be1cfcb79fcada21f\"\u003e\u003ccode\u003ec07de25\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/9f4b774e783c9eea70fcc9631a18d107ea3fe845\"\u003e\u003ccode\u003e9f4b774\u003c/code\u003e\u003c/a\u003e Update _json.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.4.0-rc.5\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0-rc.4...v0.4.0.rc.5\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0-rc.4...v0.4.0.rc.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.4.0-rc.4\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0-rc.3...v0.4.0-rc.4\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0-rc.3...v0.4.0-rc.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.4.0-rc.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\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/plotly/Kaleido/commit/99820ae4a828666aafd9df432b9aad787d7a95e4\"\u003e\u003ccode\u003e99820ae\u003c/code\u003e\u003c/a\u003e Update README and CHANGELOG for v1 release (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/48c931e0f402e8a20dcc456139db9f8e0b7813da\"\u003e\u003ccode\u003e48c931e\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/2d13f312454b24ce4efdb8befb146ff361001517\"\u003e\u003ccode\u003e2d13f31\u003c/code\u003e\u003c/a\u003e use exc_info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e4eeb3b1114c9f394a9e302ce94e7cadc2696f04\"\u003e\u003ccode\u003ee4eeb3b\u003c/code\u003e\u003c/a\u003e wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/7f841b2f25311bb0f5fd13fbfe4bd9ed23484baa\"\u003e\u003ccode\u003e7f841b2\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/53da5d68f5491c411c4d5467690c66eaed1e59ac\"\u003e\u003ccode\u003e53da5d6\u003c/code\u003e\u003c/a\u003e add 'packaging' to dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/d24f0fdace8fff06558546f7bd342e5f2d24640c\"\u003e\u003ccode\u003ed24f0fd\u003c/code\u003e\u003c/a\u003e show warning if incompatible plotly version is installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/eb21c13199ed6f3da480ab84e0403f05496a50ad\"\u003e\u003ccode\u003eeb21c13\u003c/code\u003e\u003c/a\u003e Andrew/sanitize title (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/340\"\u003e#340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fd7da8008adc33a88a8f45f0f0bf44bec76f441c\"\u003e\u003ccode\u003efd7da80\u003c/code\u003e\u003c/a\u003e Sanitize glob as well\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/f5694c78995f245f8f032020483f1273887ca547\"\u003e\u003ccode\u003ef5694c7\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\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/pandas-dev/pandas/commit/4665c10899bc413b639194f6fb8665a5c70f7db5\"\u003e\u003ccode\u003e4665c10\u003c/code\u003e\u003c/a\u003e RLS: 2.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/633c68b91808441eba7d73b630a82b713ba19da8\"\u003e\u003ccode\u003e633c68b\u003c/code\u003e\u003c/a\u003e DOC: fix syntax in whatsnew file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/456ad4702cb017aab36e2d09a4029b1b085198f5\"\u003e\u003ccode\u003e456ad47\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62152\"\u003e#62152\u003c/a\u003e on branch 2.3.x (DOC: prepare 2.3.2 whatsnew notes for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6cae6444444ed7943ceffbd5990cd8249dd5b47c\"\u003e\u003ccode\u003e6cae644\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: move and reword whatsnew note for replace fix (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/57865\"\u003eGH-57865\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/a91c50a58c372cddf104fd60241c7284bbf8fc80\"\u003e\u003ccode\u003ea91c50a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62147\"\u003e#62147\u003c/a\u003e on branch 2.3.x (DOC: correct and rewrite string migration...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f7a2cfdf2ed08016167ae6c5e577c54949a849b2\"\u003e\u003ccode\u003ef7a2cfd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG/DEPR: logical operation with bool and string (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/61995\"\u003e#61995\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/7981a43db4339826a3ce5020e9b1b931e604e5bd\"\u003e\u003ccode\u003e7981a43\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62124\"\u003e#62124\u003c/a\u003e on branch 2.3.x (CI/BLD: don't use strict xfail for '%m.%Y...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/fafbcbd03d1721830f4df8255abdab341db2a583\"\u003e\u003ccode\u003efafbcbd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG(CoW): also raise for chained assignment for .at / .iat (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3ac64a714886d917ca24ba637a85c4aaf563fc1b\"\u003e\u003ccode\u003e3ac64a7\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: Fix Series.str.contains with compiled regex on Arrow st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/1f2dc4fd8a2503773b6f90cb5e8cc5c3172c3c11\"\u003e\u003ccode\u003e1f2dc4f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix Series.str.fullmatch() and Series.str.match() with ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.3.0...v2.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.26.0 to 4.28.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.28.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3570\"\u003etox-dev/tox#3570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass ssh-agent variables by default by \u003ca href=\"https://github.com/daniilgankov\"\u003e\u003ccode\u003e@​daniilgankov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3572\"\u003etox-dev/tox#3572\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/daniilgankov\"\u003e\u003ccode\u003e@​daniilgankov\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3572\"\u003etox-dev/tox#3572\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.28.3...4.28.4\"\u003ehttps://github.com/tox-dev/tox/compare/4.28.3...4.28.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.28.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo on cmd_build filter check expression by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3569\"\u003etox-dev/tox#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.28.2...4.28.3\"\u003ehttps://github.com/tox-dev/tox/compare/4.28.2...4.28.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.28.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon't pass in the filter argument to tar.extractall on old Python versions by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3568\"\u003etox-dev/tox#3568\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.28.1...4.28.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.28.1...4.28.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.28.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix an issue number typo in changelog by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3563\"\u003etox-dev/tox#3563\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/tox-dev/tox/pull/3564\"\u003etox-dev/tox#3564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use tarfile.data_filter when it's available by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.githu...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/429","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/429","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/429/packages"},{"uuid":"2773373297","node_id":"PR_kwDOOaPssc6lTlFx","number":49,"state":"open","title":"Bump the python-packages group across 1 directory with 65 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-26T00:35:28.000Z","updated_at":"2025-08-26T00:35:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":65,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.1","repository_url":"https://github.com/django/asgiref"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.1.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.0.20","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.116.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.74.0","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.34.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.1","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.101.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.2","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.6.1","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.7","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.7.34","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"starlette","old_version":"0.46.2","new_version":"0.47.3","repository_url":"https://github.com/encode/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.21.4","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.55.4","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.16.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.35.0","repository_url":"https://github.com/encode/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 65 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.1.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.0.20` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.116.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.7.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.74.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.34.4` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.10.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.101.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.57b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.6.1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.7` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.7.34` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.0` |\n| [starlette](https://github.com/encode/starlette) | `0.46.2` | `0.47.3` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.21.4` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.55.4` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.16.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/encode/uvicorn) | `0.34.2` | `0.35.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.10.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\nof asyncio's\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e\nAPI on Python 3.14 or later\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can\nsuppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise.\n(\u003ccode\u003e[#913](https://github.com/agronholm/anyio/issues/913) \u0026lt;https://github.com/agronholm/anyio/pull/913\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover\nonly occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e\n(\u003ccode\u003e[#915](https://github.com/agronholm/anyio/issues/915) \u0026lt;https://github.com/agronholm/anyio/pull/915\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMigrated testing and documentation dependencies from extras to dependency groups\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/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.9.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.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b126e0c01144bd980937b658dd6eaf236150fe63\"\u003e\u003ccode\u003eb126e0c\u003c/code\u003e\u003c/a\u003e Removed unneeded typing workaround (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef1678a65b891ef838525d1f3a658875acb9018a\"\u003e\u003ccode\u003eef1678a\u003c/code\u003e\u003c/a\u003e Migrate work for finished \u003ccode\u003eCurrentThreadExecutor\u003c/code\u003e to previous executor (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/37870f58963c38617a910743ba69311ec8e4e0d0\"\u003e\u003ccode\u003e37870f5\u003c/code\u003e\u003c/a\u003e Fixed reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ec6f666621407674e80d039bf235ba2662193bdb\"\u003e\u003ccode\u003eec6f666\u003c/code\u003e\u003c/a\u003e Add MicroPie framework to \u003ccode\u003eimplementations.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/5eff04dce46b74172a1d6d1c5b02409f0afe33b6\"\u003e\u003ccode\u003e5eff04d\u003c/code\u003e\u003c/a\u003e Lazily bind ApplicationCommunicator to event loop (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.1.0\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.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/34815dd03f5954272e0f06c1571e871ed1cfb5f4\"\u003e\u003ccode\u003e34815dd\u003c/code\u003e\u003c/a\u003e Update documentation for v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/8854b5075a63adee657a9f32485b026b6e33a29a\"\u003e\u003ccode\u003e8854b50\u003c/code\u003e\u003c/a\u003e Add intersphinx extension.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0af4a07f371120521370a11e38473e21ec2ea6a1\"\u003e\u003ccode\u003e0af4a07\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.0 to 5.4.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.1.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.0.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.20\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.20\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.20\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T17:04\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.20.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[RELEASE] 1.0.20 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5303\"\u003echroma-core/chroma#5303\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.0.18\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.18\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.18\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T08:09\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.18.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHORE]: Added short descriptions to CLI commands by \u003ca href=\"https://github.com/tazarov\"\u003e\u003ccode\u003e@​tazarov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5217\"\u003echroma-core/chroma#5217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use AVX in distance calculations by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5258\"\u003echroma-core/chroma#5258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Auto-set tenant, scoped database in python CloudClient by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5026\"\u003echroma-core/chroma#5026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[PERF]: Modify get_range to return an iterator by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5256\"\u003echroma-core/chroma#5256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Mark dirty on rollback of cursor to guarantee compaction picks it up. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5265\"\u003echroma-core/chroma#5265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add metric for component queue depth \u0026amp; change dispatcher queue depth metric buckets by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5261\"\u003echroma-core/chroma#5261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add garbage collection CLI for manual garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5250\"\u003echroma-core/chroma#5250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Clean up DEVELOP.md by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5270\"\u003echroma-core/chroma#5270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Further optimize query on getCollections when databases pkey is fully specified by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5268\"\u003echroma-core/chroma#5268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Rust to allow build with AVX when flag is set by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5269\"\u003echroma-core/chroma#5269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Fix test_add flake by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5272\"\u003echroma-core/chroma#5272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert \u0026quot;[ENH]: Further optimize query on getCollections when databases pkey is fully specified (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5268\"\u003e#5268\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5273\"\u003echroma-core/chroma#5273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add maturin to dev dependencies by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5271\"\u003echroma-core/chroma#5271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Optimize GetCollections and remove usage of raw gorm by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5274\"\u003echroma-core/chroma#5274\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add config param to garbage collector to control how many collections are fetched from SysDb by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5275\"\u003echroma-core/chroma#5275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Reject version files without paths. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5267\"\u003echroma-core/chroma#5267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Enable getting a collection by CRN by \u003ca href=\"https://github.com/drewkim\"\u003e\u003ccode\u003e@​drewkim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5244\"\u003echroma-core/chroma#5244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] CompactionError did not proxy should_trace_error by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5282\"\u003echroma-core/chroma#5282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Resolve deadlock in system crate? by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5283\"\u003echroma-core/chroma#5283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Complete the NAC metrics for the write half. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5278\"\u003echroma-core/chroma#5278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: fix missing node in constructed version graph for garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5284\"\u003echroma-core/chroma#5284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix test flake from 5283. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5287\"\u003echroma-core/chroma#5287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Don't GC hnsw if it is empty by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5295\"\u003echroma-core/chroma#5295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Sync before flushing by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5296\"\u003echroma-core/chroma#5296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota limits by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5297\"\u003echroma-core/chroma#5297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix CLI copy offset by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5288\"\u003echroma-core/chroma#5288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add support for default space in create coll config by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5293\"\u003echroma-core/chroma#5293\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/chroma-core/chroma/commit/b6b059dfd71525f9abad931ec30063bae177696f\"\u003e\u003ccode\u003eb6b059d\u003c/code\u003e\u003c/a\u003e [RELEASE] 1.0.20 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5303\"\u003e#5303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/1993cd4a515b40faac8e2c7c7d65526445959f0b\"\u003e\u003ccode\u003e1993cd4\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.8, Python 1.0.19, JS 3.0.14 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5302\"\u003e#5302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/19600af2796fffbe1781ef486ee324851877f88f\"\u003e\u003ccode\u003e19600af\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy arg number types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5301\"\u003e#5301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d3602cd776b2e3716ba3c9685a6571c1933489bc\"\u003e\u003ccode\u003ed3602cd\u003c/code\u003e\u003c/a\u003e [CHORE] Update JS binding deps in the client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5300\"\u003e#5300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2570b471edc5a47fc271eddfa37d8e4236ac0f21\"\u003e\u003ccode\u003e2570b47\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.7, Python 1.0.18, JS 3.0.13 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5299\"\u003e#5299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/51a7d1625b3b41083891f1c600e15131a321ae5e\"\u003e\u003ccode\u003e51a7d16\u003c/code\u003e\u003c/a\u003e [ENH] Add support for default space in create coll config (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5293\"\u003e#5293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/163133aacc9dab8a9e7d871db031d6e159ea1322\"\u003e\u003ccode\u003e163133a\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy offset (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5288\"\u003e#5288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f06586503be2603d49bd47c1315001460dac947\"\u003e\u003ccode\u003e2f06586\u003c/code\u003e\u003c/a\u003e [DOC] update quota limits (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5297\"\u003e#5297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/983728076d253409791709d5dbbed0657e30b6d9\"\u003e\u003ccode\u003e9837280\u003c/code\u003e\u003c/a\u003e [ENH] Sync before flushing (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5296\"\u003e#5296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/649e14c530fe46b0e5dec84ce2f5b25a28b79a2e\"\u003e\u003ccode\u003e649e14c\u003c/code\u003e\u003c/a\u003e [BUG]: Don't GC hnsw if it is empty (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5295\"\u003e#5295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.0.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.116.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.116.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13884\"\u003e#13884\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📝 Add notification about impending changes in Translations to \u003ccode\u003edocs/en/docs/contributing.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13886\"\u003e#13886\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13871\"\u003e#13871\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.116.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for deploying to FastAPI Cloud with \u003ccode\u003efastapi deploy\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13870\"\u003e#13870\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\u003cp\u003eInstalling \u003ccode\u003efastapi[standard]\u003c/code\u003e now includes \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis will allow you to deploy to \u003ca href=\"https://fastapicloud.com\"\u003eFastAPI Cloud\u003c/a\u003e with the \u003ccode\u003efastapi deploy\u003c/code\u003e command.\u003c/p\u003e\n\u003cp\u003eIf you want to install \u003ccode\u003efastapi\u003c/code\u003e with the standard dependencies but without \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e, you can install instead \u003ccode\u003efastapi[standard-no-fastapi-cloud-cli]\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13801\"\u003e#13801\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/additional-status-codes.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13799\"\u003e#13799\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Ukrainian translation for \u003ccode\u003edocs/uk/docs/tutorial/body-updates.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13804\"\u003e#13804\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\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 pillow from 11.1.0 to 11.3.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13852\"\u003e#13852\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 FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13846\"\u003e#13846\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13848\"\u003e#13848\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 mkdocs-material from 9.6.1 to 9.6.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13849\"\u003e#13849\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13843\"\u003e#13843\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13845\"\u003e#13845\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.115.14\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for unions when using \u003ccode\u003eForm\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13827\"\u003e#13827\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\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✏️ Fix grammar mistake in \u003ccode\u003edocs/en/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13800\"\u003e#13800\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Speakeasy URL to Speakeasy Sandbox. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13697\"\u003e#13697\u003c/a\u003e by \u003ca href=\"https://github.com/ndimares\"\u003e\u003ccode\u003e@​ndimares\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\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/fastapi/fastapi/commit/313723494be79d4b24ccaa60e4f6d1f96c150fed\"\u003e\u003ccode\u003e3137234\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/095dab00c7d7bb3fc5d02da159207d56ac5bc1ea\"\u003e\u003ccode\u003e095dab0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cad6880fd97d6f25d3f05025c88230285386e7f9\"\u003e\u003ccode\u003ecad6880\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13884\"\u003e#13884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a6e79e68a438c3e1f2ff628254d433832f73df53\"\u003e\u003ccode\u003ea6e79e6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c13b1ba4bce313d68f2ebd562b9b0c3267f5158\"\u003e\u003ccode\u003e2c13b1b\u003c/code\u003e\u003c/a\u003e 📝 Add notification about impending changes in Translations to `docs/en/docs/c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7179d48fd774bcbc5f5013bb8f4df61b8c36795f\"\u003e\u003ccode\u003e7179d48\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/07bcb18a5a2ddab8282f4a9d50f63f3c9f46ca8c\"\u003e\u003ccode\u003e07bcb18\u003c/code\u003e\u003c/a\u003e ⬆ [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13871\"\u003e#13871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd8f358fd93416835b06486566b9d9ab991577b6\"\u003e\u003ccode\u003ebd8f358\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/18eb7a708096ab7a19f31a59918bc010aba0ddba\"\u003e\u003ccode\u003e18eb7a7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dd906a998ee2aa41cba98edf13364b34fdc9b1c1\"\u003e\u003ccode\u003edd906a9\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.115.12...0.116.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.18.0 to 3.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd 3.14t (free threading) to matrix by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/434\"\u003etox-dev/filelock#434\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/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for 3.14 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/432\"\u003etox-dev/filelock#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d1009f08a6a64624fad91d1079062ef31b8c2b4\"\u003e\u003ccode\u003e8d1009f\u003c/code\u003e\u003c/a\u003e Update release.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66a428e97a874b44b0310072f6c974226f55a472\"\u003e\u003ccode\u003e66a428e\u003c/code\u003e\u003c/a\u003e Increase test coverage (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0dfc86eebd2c76ae959a409bcbc3112cc1ec5890\"\u003e\u003ccode\u003e0dfc86e\u003c/code\u003e\u003c/a\u003e add 3.14 to matrix (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0c54837e318ebe8a692b529722430cb38134bf7c\"\u003e\u003ccode\u003e0c54837\u003c/code\u003e\u003c/a\u003e Add support for 3.14 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/77d02f5ada3a1a92167b1beee35a7815cbde0fcf\"\u003e\u003ccode\u003e77d02f5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/bc972b33bf253bb9f08db32b19ffd4119a74706e\"\u003e\u003ccode\u003ebc972b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/78d02cb5ff42b22a56ad1a36755361a6b4601765\"\u003e\u003ccode\u003e78d02cb\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/18cdb5d1c78a7a459463480303e9820f33cdf041\"\u003e\u003ccode\u003e18cdb5d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/b198a096d2bae58596479497d18a82bbeec515c8\"\u003e\u003ccode\u003eb198a09\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/6b097e76de603d9be6a24c5058b6fe53ef003afd\"\u003e\u003ccode\u003e6b097e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.18.0...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2025.3.2 to 2025.7.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/852f892f497940fc246d335a0ac7b3b3d93530fc\"\u003e\u003ccode\u003e852f892\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1891\"\u003e#1891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/97e5913518b4b11805394add1488ae93c62303cd\"\u003e\u003ccode\u003e97e5913\u003c/code\u003e\u003c/a\u003e Ruff legacy alias (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1887\"\u003e#1887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/57b7381ad92455ea0d4861e5e3531a77b823fc1f\"\u003e\u003ccode\u003e57b7381\u003c/code\u003e\u003c/a\u003e Remove any references to Python 3.8 (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1888\"\u003e#1888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/b5f9391945ae9a0ed3bee7881352c317d601794d\"\u003e\u003ccode\u003eb5f9391\u003c/code\u003e\u003c/a\u003e Fix: HTTPFileSystem isdir downloads the whole file issue (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/iss...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"},{"uuid":"2770831311","node_id":"PR_kwDOG_O3ns6lJ4fP","number":2632,"state":"closed","title":"Bump mmh3 from 5.1.0 to 5.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":"2025-08-25T15:24:46.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-25T07:09:00.000Z","updated_at":"2025-08-25T15:24:46.000Z","time_to_close":29746,"merged_at":"2025-08-25T15:24:46.000Z","merged_by":"liquidsec","closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"Bumps [mmh3](https://github.com/hajimes/mmh3) from 5.1.0 to 5.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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=mmh3\u0026package-manager=pip\u0026previous-version=5.1.0\u0026new-version=5.2.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/blacklanternsecurity/bbot/pull/2632","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklanternsecurity%2Fbbot/issues/2632","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2632/packages"}],"issue_packages":[{"old_version":"\u003e=4.1.0","new_version":"\u003e=5.2.1","update_type":"minor","path":null,"pr_created_at":"2026-06-13T02:44:01.000Z","version_change":"\u003e=4.1.0 → \u003e=5.2.1","issue":{"uuid":"4654019322","node_id":"PR_kwDORYPRfc7l_554","number":128,"state":"closed","title":"chore(deps): update mmh3 requirement from \u003e=4.1.0 to \u003e=5.2.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-13T02:59:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-13T02:44:01.000Z","updated_at":"2026-06-13T02:59:59.000Z","time_to_close":956,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"mmh3","old_version":"\u003e=4.1.0","new_version":"\u003e=5.2.1","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [mmh3](https://github.com/hajimes/mmh3) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.1] - 2026-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.1.0] - 2025-01-25\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove the performance of \u003ccode\u003ehash128()\u003c/code\u003e, \u003ccode\u003ehash64()\u003c/code\u003e, and \u003ccode\u003ehash_bytes()\u003c/code\u003e by\nusing\n\u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e,\nreducing the overhead of function calls\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/116\"\u003e#116\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd the software paper for this library\n(\u003ca href=\"https://doi.org/10.21105/joss.06124\"\u003edoi:10.21105/joss.06124\u003c/a\u003e), following\nits publication in the\n\u003ca href=\"https://joss.theoj.org\"\u003e\u003cem\u003eJournal of Open Source Software\u003c/em\u003e\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8, as it has reached the end of life on 2024-10-07\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/117\"\u003e#117\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.0.1] - 2024-09-22\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the issue that the package cannot be built from the source distribution\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/90\"\u003e#90\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/hajimes/mmh3/commit/a4c44d81a8dc433ac50977425d7a5cf27cea9f0c\"\u003e\u003ccode\u003ea4c44d8\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 5.2.1 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c83701d471d557594ab7f8003c13a476057fa7b1\"\u003e\u003ccode\u003ec83701d\u003c/code\u003e\u003c/a\u003e ci: update workflow files (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/d4311b2d97b0f965aec857d94fa19aa0cd70ef8a\"\u003e\u003ccode\u003ed4311b2\u003c/code\u003e\u003c/a\u003e style: migrate to Ruff (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/25f98341e1ed5b5de9f1c7c28d67265501506281\"\u003e\u003ccode\u003e25f9834\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c4079917eadce86025724913e0cb620948e1199f\"\u003e\u003ccode\u003ec407991\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/ee3a78a1fe3f82c7e2018f290d6ab262603d24dd\"\u003e\u003ccode\u003eee3a78a\u003c/code\u003e\u003c/a\u003e ci: update wheel configs (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/60957d75f0c30cf25d1f5354f5a5ac0febd952e3\"\u003e\u003ccode\u003e60957d7\u003c/code\u003e\u003c/a\u003e fix: modify sed commands for cross-platform builds (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/da3bb5f0aa7a004b2ae3a5d0eb3d06c05f370130\"\u003e\u003ccode\u003eda3bb5f\u003c/code\u003e\u003c/a\u003e Switch back to workflow_dispatch for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/bdaedf92e861df6eab2e3b229ce92fc688fa8f79\"\u003e\u003ccode\u003ebdaedf9\u003c/code\u003e\u003c/a\u003e Bump pyperf in the dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/3342d17e5315fb9935f9348824c5b7acbc0b4808\"\u003e\u003ccode\u003e3342d17\u003c/code\u003e\u003c/a\u003e Bump dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v4.1.0...v5.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/iimp0ster/detection-chokepoints/pull/128","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/iimp0ster%2Fdetection-chokepoints/issues/128","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/128/packages"}},{"old_version":"4.1.0","new_version":"5.2.0","update_type":"major","path":null,"pr_created_at":"2026-05-03T11:42:31.000Z","version_change":"4.1.0 → 5.2.0","issue":{"uuid":"4371672608","node_id":"PR_kwDOSAA7jM7XxBFd","number":5,"state":"open","title":"deps: bump mmh3 from 4.1.0 to 5.2.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-05-03T11:42:31.000Z","updated_at":"2026-05-03T11:42:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"mmh3","old_version":"4.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"Bumps [mmh3](https://github.com/hajimes/mmh3) from 4.1.0 to 5.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove the performance of \u003ccode\u003ehash128()\u003c/code\u003e, \u003ccode\u003ehash64()\u003c/code\u003e, and \u003ccode\u003ehash_bytes()\u003c/code\u003e by using \u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e, reducing the overhead of function calls (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/116\"\u003e#116\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd the software paper for this library (\u003ca href=\"https://doi.org/10.21105/joss.06124\"\u003edoi:10.21105/joss.06124\u003c/a\u003e), following its publication in the \u003ca href=\"https://joss.theoj.org\"\u003e\u003cem\u003eJournal of Open Source Software\u003c/em\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8, as it has reached the end of life on 2024-10-07 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/117\"\u003e#117\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/drvinceknight\"\u003e\u003ccode\u003e@​drvinceknight\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/113\"\u003ehajimes/mmh3#113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielskatz\"\u003e\u003ccode\u003e@​danielskatz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/114\"\u003ehajimes/mmh3#114\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.0.1...v5.1.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.0.1...v5.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue with not building from sdist by \u003ca href=\"https://github.com/hajimes\"\u003e\u003ccode\u003e@​hajimes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/91\"\u003ehajimes/mmh3#91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.0.0...v5.0.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.0.0...v5.0.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e(Re-release to trigger Zenodo)\u003c/p\u003e\n\u003ch2\u003ev5.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 4 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/57\"\u003ehajimes/mmh3#57\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4.0.0 to 4.3.6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/58\"\u003ehajimes/mmh3#58\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4.1.0 to 4.1.8 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/59\"\u003ehajimes/mmh3#59\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/cibuildwheel from 2.16.2 to 2.20.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/60\"\u003ehajimes/mmh3#60\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.1.0] - 2025-01-25\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove the performance of \u003ccode\u003ehash128()\u003c/code\u003e, \u003ccode\u003ehash64()\u003c/code\u003e, and \u003ccode\u003ehash_bytes()\u003c/code\u003e by\nusing\n\u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e,\nreducing the overhead of function calls\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/116\"\u003e#116\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd the software paper for this library\n(\u003ca href=\"https://doi.org/10.21105/joss.06124\"\u003edoi:10.21105/joss.06124\u003c/a\u003e), following\nits publication in the\n\u003ca href=\"https://joss.theoj.org\"\u003e\u003cem\u003eJournal of Open Source Software\u003c/em\u003e\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8, as it has reached the end of life on 2024-10-07\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/117\"\u003e#117\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.0.1] - 2024-09-22\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix the issue that the package cannot be built from the source distribution\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/90\"\u003e#90\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[5.0.0] - 2024-09-18\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eImprove the performance of the \u003ccode\u003ehash()\u003c/code\u003e function with\n\u003ca href=\"https://docs.python.org/3/c-api/structures.html#c.METH_FASTCALL\"\u003eMETH_FASTCALL\u003c/a\u003e,\nreducing the overhead of function calls. For data sizes between 1–2 KB\n(e.g., 48x48 favicons), performance is 10%–20% faster. For smaller data\n(~500 bytes, like 16x16 favicons), performance increases by approximately 30%\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/1a7ebcedb94e12ce95c814eb4579bbed29691a63\"\u003e\u003ccode\u003e1a7ebce\u003c/code\u003e\u003c/a\u003e Bump version to 5.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c826f6e632a1b170c472f7fe91b7cf5a6dc55ab1\"\u003e\u003ccode\u003ec826f6e\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/120\"\u003e#120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v4.1.0...v5.2.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=mmh3\u0026package-manager=pip\u0026previous-version=4.1.0\u0026new-version=5.2.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/quonfig/sdk-python/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/quonfig%2Fsdk-python/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}},{"old_version":"5.2.0","new_version":"5.2.1","update_type":"patch","path":null,"pr_created_at":"2026-04-27T04:45:26.000Z","version_change":"5.2.0 → 5.2.1","issue":{"uuid":"4333145766","node_id":"PR_kwDOQguR2c7V04_h","number":11,"state":"closed","title":"chore(deps): bump the python-minor-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T04:47:54.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T04:45:26.000Z","updated_at":"2026-05-11T04:47:55.000Z","time_to_close":1209748,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":43,"packages":[{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"ecdsa","old_version":"0.19.1","new_version":"0.19.2","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fsspec","old_version":"2026.1.0","new_version":"2026.4.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jiter","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"lxml","old_version":"6.0.2","new_version":"6.1.0","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.2.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"nltk","old_version":"3.9.2","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"openai","old_version":"2.16.0","new_version":"2.33.0","repository_url":"https://github.com/openai/openai-python"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"12.1.0","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"postgrest","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"psycopg-binary","old_version":"3.3.2","new_version":"3.3.4","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.46.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyiceberg","old_version":"0.10.0","new_version":"0.11.1","repository_url":"https://github.com/apache/iceberg-python"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pypdfium2","old_version":"5.3.0","new_version":"5.7.1","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"pyroaring","old_version":"1.0.3","new_version":"1.1.0","repository_url":"https://github.com/Ezibenroc/PyRoaringBitMap"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"realtime","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"reportlab","old_version":"4.4.9","new_version":"4.5.0"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"storage3","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-auth","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-functions","old_version":"2.27.2","new_version":"2.29.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"textblob","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"yarl","old_version":"1.22.0","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 43 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.1` | `0.19.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.1.0` | `2026.4.0` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.14.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.2` | `6.1.0` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.2.1` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.2` | `3.9.4` |\n| [openai](https://github.com/openai/openai-python) | `2.16.0` | `2.33.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.2.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.2` | `3.3.4` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.3` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.14.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.46.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyiceberg](https://github.com/apache/iceberg-python) | `0.10.0` | `0.11.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.12.1` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.3.0` | `5.7.1` |\n| [pyroaring](https://github.com/Ezibenroc/PyRoaringBitMap) | `1.0.3` | `1.1.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.27` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.4.4` |\n| [reportlab](https://www.reportlab.com/) | `4.4.9` | `4.5.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [storage3](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [supabase-auth](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [supabase-functions](https://github.com/supabase/supabase-py) | `2.27.2` | `2.29.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.19.0` | `0.20.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.46.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.23.0` |\n\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 `certifi` from 2026.1.4 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/2026.01.04...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.4 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...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.3.1 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.3.1...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ecdsa` from 0.19.1 to 0.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/releases\"\u003eecdsa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.2\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to use newer version of Ubuntu.\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/tlsfuzzer/python-ecdsa/blob/master/NEWS\"\u003eecdsa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eRelease 0.19.2 (26 Mar 2026)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI to use newer version of Ubuntu.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.1 (13 Mar 2025)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eder.remove_implitic\u003c/code\u003e and \u003ccode\u003eder.encode_implicit\u003c/code\u003e for decoding and\nencoding DER IMPLICIT values with custom tag values and arbitrary\nclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMinor fixes around arithmetic with curves that have non-prime order\n(useful for experimentation, not practical deployments)\u003c/li\u003e\n\u003cli\u003eFix arithmetic to work with curves that have (0, 0) on the curve\u003c/li\u003e\n\u003cli\u003eFix canonicalization of signatures when \u003ccode\u003es\u003c/code\u003e is just slightly\nabove half of curve order\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped official support for Python 3.5 (again, issues with CI, support\nfor Python 2.6 and Python 2.7 is unchanged)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOfficialy support Python 3.12 and 3.13 (add them to CI)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoval of few more unnecessary \u003ccode\u003esix.b\u003c/code\u003e literals (Alexandre Detiste)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix typos in warning messages\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.0 (08 Apr 2024)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eto_ssh\u003c/code\u003e in \u003ccode\u003eVerifyingKey\u003c/code\u003e and \u003ccode\u003eSigningKey\u003c/code\u003e, supports Ed25519 keys only\n(Pablo Mazzini)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for twisted Brainpool curves\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDoc fix:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix curve equation in glossary\u003c/li\u003e\n\u003cli\u003eDocumentation for signature encoding and signature decoding functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped official support for 3.3 and 3.4 (because of problems running them\nin CI, not because it's actually incompatible; support for 2.6 and 2.7 is\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/tlsfuzzer/python-ecdsa/commit/bd66899550d7185939bf27b75713a2ac9325a9d3\"\u003e\u003ccode\u003ebd66899\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/9c046ee7f61649a8a43d3f6f9c64f13e76e148db\"\u003e\u003ccode\u003e9c046ee\u003c/code\u003e\u003c/a\u003e tests: reject truncated DER lengths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/acc40fdaf7bb09aafc912a687ca6ed063ecaface\"\u003e\u003ccode\u003eacc40fd\u003c/code\u003e\u003c/a\u003e der: reject truncated lengths in octet/implicit/constructed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/55aca7830c41af8d6b66ce2ba71fb9aac35085ec\"\u003e\u003ccode\u003e55aca78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tlsfuzzer/python-ecdsa/issues/363\"\u003e#363\u003c/a\u003e from gstarovo/ubuntu20-deprecation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/c4f0df174ad3ae75e59f4e9f47d4a912f5fe21cf\"\u003e\u003ccode\u003ec4f0df1\u003c/code\u003e\u003c/a\u003e chore: change to ubuntu-22 since u-20 is deprecated\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/compare/python-ecdsa-0.19.1...python-ecdsa-0.19.2\"\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 `fsspec` from 2026.1.0 to 2026.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/8fdedd1fd17be354f75f0cec1f973d93416c704b\"\u003e\u003ccode\u003e8fdedd1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/fsspec/filesystem_spec\"\u003ehttps://github.com/fsspec/filesystem_spec\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/8205d0d1afecb64f34565ebeb073b7f1959a869d\"\u003e\u003ccode\u003e8205d0d\u003c/code\u003e\u003c/a\u003e Release (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2027\"\u003e#2027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/50bfba22200077fa602038857e19d58cc2541db5\"\u003e\u003ccode\u003e50bfba2\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/fsspec/filesystem_spec\"\u003ehttps://github.com/fsspec/filesystem_spec\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/f58bc851213ab3a87b2d26c01c9d26b291b0e1d3\"\u003e\u003ccode\u003ef58bc85\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;DEP: de-duplicate and sort optional dependencies (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2021\"\u003e#2021\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2026\"\u003e#2026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/c6c7b40b7794c6e554d9dcae7bf4930bba67e403\"\u003e\u003ccode\u003ec6c7b40\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;DEP: de-duplicate and sort optional dependencies (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2021\"\u003e#2021\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/3bc67f85c3b67c5adef11af35761fd839de306fb\"\u003e\u003ccode\u003e3bc67f8\u003c/code\u003e\u003c/a\u003e DEP: de-duplicate and sort optional dependencies (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/0b290bf1336bb15d4327afcdf743d9a17b5ea762\"\u003e\u003ccode\u003e0b290bf\u003c/code\u003e\u003c/a\u003e docs: add URL handling note to HTTPFileSystem class docstring (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/b33a2d6c3b6912c645d9a315791f41e74bff4c66\"\u003e\u003ccode\u003eb33a2d6\u003c/code\u003e\u003c/a\u003e ci: install downstream systems like gcsfs before testing so the \u003ccode\u003e_version.py\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/e9e7a5b5eab42b6c6d0790aa0aa510f66fc44630\"\u003e\u003ccode\u003ee9e7a5b\u003c/code\u003e\u003c/a\u003e Delegate DirFileSystem delete and write_text (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2022\"\u003e#2022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/105d614a443e3f46236deb87442cc5491741687c\"\u003e\u003ccode\u003e105d614\u003c/code\u003e\u003c/a\u003e fix: use encode_url() in _pipe_file for consistency (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2023\"\u003e#2023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fsspec/filesystem_spec/compare/2026.1.0...2026.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.11 to 3.13\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.13 (2026-04-22)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.12 (2026-04-21)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/89cdfd27338896cee6b1ee18e64c96ac28684ce0\"\u003e\u003ccode\u003e89cdfd2\u003c/code\u003e\u003c/a\u003e Release v3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1eb068687543118147417a8d8a70674e2c172891\"\u003e\u003ccode\u003e1eb0686\u003c/code\u003e\u003c/a\u003e Pre-release 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5f20d1e41eea3b3873d18d83d7a384784f72a92e\"\u003e\u003ccode\u003e5f20d1e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/220\"\u003e#220\u003c/a\u003e from kjd/unicode-next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/4ea84252ab21e62a79e5a3273746112b5dcfb810\"\u003e\u003ccode\u003e4ea8425\u003c/code\u003e\u003c/a\u003e Regenerate idnadata.py with correct NFKC_CF data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/fd47341a08bbdcffda33694211ca4de10170cd41\"\u003e\u003ccode\u003efd47341\u003c/code\u003e\u003c/a\u003e Use NFKC_CF from Unicode data files instead of Python's unicodedata module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a5304a4cdbd7b31595f8ac42ffdfa88f5b936467\"\u003e\u003ccode\u003ea5304a4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/219\"\u003e#219\u003c/a\u003e from kjd/release-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d80d6f9254d699961fa2c669a1534cde9d4ee5b6\"\u003e\u003ccode\u003ed80d6f9\u003c/code\u003e\u003c/a\u003e Release v3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1bb44ddb3f2a9dcf97a6ac11aba34e5b6ed31291\"\u003e\u003ccode\u003e1bb44dd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/218\"\u003e#218\u003c/a\u003e from kjd/release-candidate-3.12rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/909c49d15b8d159be163bccc7972116baffdb47b\"\u003e\u003ccode\u003e909c49d\u003c/code\u003e\u003c/a\u003e Release candidate for 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5459a10370f005dc09921aee3201b5a45699f9d\"\u003e\u003ccode\u003ec5459a1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/217\"\u003e#217\u003c/a\u003e from kjd/housekeeping-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.11...v3.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jiter` from 0.12.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/dcdc93df6b9c6eb53facb0fff725069d9528d735\"\u003e\u003ccode\u003edcdc93d\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/974695165327d19c93eb7b6030050c6555125ff2\"\u003e\u003ccode\u003e9746951\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/7f311e91b35e9896a43d0f57e7a3ca905efb1a5b\"\u003e\u003ccode\u003e7f311e9\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/246\"\u003e#246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/52d6f7df7d7eb94ec8cc3307d466e49ef98fdf60\"\u003e\u003ccode\u003e52d6f7d\u003c/code\u003e\u003c/a\u003e Update pyodide to 0.28 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/40c53b38ef8049e222f11ed345f2309ad3e5e249\"\u003e\u003ccode\u003e40c53b3\u003c/code\u003e\u003c/a\u003e remove hyperlint (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/891a4d4f127b6d720439755c20e7193ad83531f9\"\u003e\u003ccode\u003e891a4d4\u003c/code\u003e\u003c/a\u003e Update to edition 2024, MSRV 1.88 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/b14af5e412454275d6a303f4517faec74bfcc4c1\"\u003e\u003ccode\u003eb14af5e\u003c/code\u003e\u003c/a\u003e Avoid stack overflow in \u003ccode\u003ePyStringCache\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/1764e65598dc197402769a054160583c26da9ef8\"\u003e\u003ccode\u003e1764e65\u003c/code\u003e\u003c/a\u003e Introduce zizmor (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/29a5e6dd444c950d57ef347ff42f4015174e7d27\"\u003e\u003ccode\u003e29a5e6d\u003c/code\u003e\u003c/a\u003e Add yamlfmt (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/cb40f58b9d3baf89d3a68b1ee9ce4919a592025e\"\u003e\u003ccode\u003ecb40f58\u003c/code\u003e\u003c/a\u003e Modernize project setup using uv (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/240\"\u003e#240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/jiter/compare/v0.12.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.0.2 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.0 (2026-04-17)\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/wandile0157/smartdoc-ai-backend/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandile0157%2Fsmartdoc-ai-backend/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"5.2.0","new_version":"5.2.1","update_type":"patch","path":null,"pr_created_at":"2026-04-19T06:23:45.000Z","version_change":"5.2.0 → 5.2.1","issue":{"uuid":"4290110444","node_id":"PR_kwDOQguR2c7TrcCW","number":4,"state":"closed","title":"build(deps): bump the python-minor-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-27T04:42:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-19T06:23:45.000Z","updated_at":"2026-04-27T04:42:47.000Z","time_to_close":685140,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-minor-patch","update_count":43,"packages":[{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.2","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.4","new_version":"46.0.7","repository_url":"https://github.com/pyca/cryptography"},{"name":"ecdsa","old_version":"0.19.1","new_version":"0.19.2","repository_url":"https://github.com/tlsfuzzer/python-ecdsa"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.136.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fsspec","old_version":"2026.1.0","new_version":"2026.3.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jiter","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"lxml","old_version":"6.0.2","new_version":"6.1.0","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.2.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"nltk","old_version":"3.9.2","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"openai","old_version":"2.16.0","new_version":"2.32.0","repository_url":"https://github.com/openai/openai-python"},{"name":"packaging","old_version":"26.0","new_version":"26.1","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"12.1.0","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"postgrest","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"psycopg-binary","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.2","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.41.5","new_version":"2.46.2","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyiceberg","old_version":"0.10.0","new_version":"0.11.1","repository_url":"https://github.com/apache/iceberg-python"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pypdfium2","old_version":"5.3.0","new_version":"5.7.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"pyroaring","old_version":"1.0.3","new_version":"1.0.4","repository_url":"https://github.com/Ezibenroc/PyRoaringBitMap"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.26","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"realtime","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"reportlab","old_version":"4.4.9","new_version":"4.4.10"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"storage3","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-auth","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-functions","old_version":"2.27.2","new_version":"2.28.3","repository_url":"https://github.com/supabase/supabase-py"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"textblob","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sloria/TextBlob"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.44.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"yarl","old_version":"1.22.0","new_version":"1.23.0","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 43 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.2.25` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.4` | `46.0.7` |\n| [ecdsa](https://github.com/tlsfuzzer/python-ecdsa) | `0.19.1` | `0.19.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.136.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.1.0` | `2026.3.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [jiter](https://github.com/pydantic/jiter) | `0.12.0` | `0.14.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.2` | `6.1.0` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.2.1` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.2` | `3.9.4` |\n| [openai](https://github.com/openai/openai-python) | `2.16.0` | `2.32.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.2.0` |\n| [postgrest](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.2` | `3.3.3` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.2` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.46.2` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyiceberg](https://github.com/apache/iceberg-python) | `0.10.0` | `0.11.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.12.1` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.3.0` | `5.7.0` |\n| [pyroaring](https://github.com/Ezibenroc/PyRoaringBitMap) | `1.0.3` | `1.0.4` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.26` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.4.4` |\n| [reportlab](https://www.reportlab.com/) | `4.4.9` | `4.4.10` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [storage3](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [supabase-auth](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [supabase-functions](https://github.com/supabase/supabase-py) | `2.27.2` | `2.28.3` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [textblob](https://github.com/sloria/TextBlob) | `0.19.0` | `0.20.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.44.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.23.0` |\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 `certifi` from 2026.1.4 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\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.01.04...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.4 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...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.3.1 to 8.3.2\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.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\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. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3084\"\u003e#3084\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3152\"\u003e#3152\u003c/a\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\u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3199\"\u003e#3199\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3202\"\u003e#3202\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3209\"\u003e#3209\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3212\"\u003e#3212\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2991\"\u003e#2991\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2993\"\u003e#2993\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3110\"\u003e#3110\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3140\"\u003e#3140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3121\"\u003e#3121\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3201\"\u003e#3201\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3213\"\u003e#3213\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3225\"\u003e#3225\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/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.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\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n:issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e2991\u003c/code\u003e :issue:\u003ccode\u003e2993\u003c/code\u003e :issue:\u003ccode\u003e3110\u003c/code\u003e :pr:\u003ccode\u003e3139\u003c/code\u003e :pr:\u003ccode\u003e3140\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. :pr:\u003ccode\u003e3139\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. :issue:\u003ccode\u003e3121\u003c/code\u003e :pr:\u003ccode\u003e3201\u003c/code\u003e :pr:\u003ccode\u003e3213\u003c/code\u003e :pr:\u003ccode\u003e3225\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/click/commit/052c006033729bbb422cbdad0c4fee988ecb5aa5\"\u003e\u003ccode\u003e052c006\u003c/code\u003e\u003c/a\u003e Change update release date.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/502b7ce7b131473ef00a3586e60bb000f33b4c43\"\u003e\u003ccode\u003e502b7ce\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' of \u003ca href=\"https://github.com/pallets/click\"\u003ehttps://github.com/pallets/click\u003c/a\u003e into release-8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a0a37e411820861d48e21b131fdd840abaf746e0\"\u003e\u003ccode\u003ea0a37e4\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3301\"\u003e#3301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/57be6fc2b40eb40279d022e6aabc983ee0dfb7a9\"\u003e\u003ccode\u003e57be6fc\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/781d6a88bdd30229e72a84cd6753b0235f339679\"\u003e\u003ccode\u003e781d6a8\u003c/code\u003e\u003c/a\u003e Update publish workflows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ff795b66ba945239c779b528171f5fe4536cf844\"\u003e\u003ccode\u003eff795b6\u003c/code\u003e\u003c/a\u003e Update precommit pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dd87ef4f9fa7d6f13e14885e9a6842a21ededebc\"\u003e\u003ccode\u003edd87ef4\u003c/code\u003e\u003c/a\u003e Update github action pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/93d3f9d22e90035bc2b51c2183c15bd4a021376f\"\u003e\u003ccode\u003e93d3f9d\u003c/code\u003e\u003c/a\u003e Release version 8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3299ba1a8a5de34b24a7226a683a837d8a0857e7\"\u003e\u003ccode\u003e3299ba1\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b7f62c4d002e5b5bca3ebef6b995b7338740fe6f\"\u003e\u003ccode\u003eb7f62c4\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.2\"\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.4 to 46.0.7\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.7 - 2026-04-07\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **SECURITY ISSUE**: Fixed an issue where non-contiguous buffers could be\n  passed to APIs that accept Python buffers, which could lead to buffer\n  overflow. **CVE-2026-39892**\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.6.\n\u003cp\u003e.. _v46-0-6:\u003c/p\u003e\n\u003cp\u003e46.0.6 - 2026-03-25\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSECURITY ISSUE\u003c/strong\u003e: Fixed a bug where name constraints were not applied\nto peer names during verification when the leaf certificate contains a\nwildcard DNS SAN. Ordinary X.509 topologies are not affected by this bug,\nincluding those used by the Web PKI. Credit to \u003cstrong\u003eOleh Konko (1seal)\u003c/strong\u003e for\nreporting the issue. \u003cstrong\u003eCVE-2026-34073\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-5:\u003c/p\u003e\n\u003cp\u003e46.0.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/622d672e429a7cff836a23c5903683dbec1901f5\"\u003e\u003ccode\u003e622d672\u003c/code\u003e\u003c/a\u003e 46.0.7 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14602\"\u003e#14602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/91d728897bdad30cd5c79a2b23e207f1f050d587\"\u003e\u003ccode\u003e91d7288\u003c/code\u003e\u003c/a\u003e Cherry-pick \u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14542\"\u003e#14542\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14543\"\u003e#14543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.4...46.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ecdsa` from 0.19.1 to 0.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/releases\"\u003eecdsa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.2\u003c/h2\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to use newer version of Ubuntu.\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/tlsfuzzer/python-ecdsa/blob/master/NEWS\"\u003eecdsa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eRelease 0.19.2 (26 Mar 2026)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2026-33936, a DER parsing issue in \u003ccode\u003eremove_octet_string()\u003c/code\u003e,\n\u003ccode\u003eremove_constructed()\u003c/code\u003e, and \u003ccode\u003eremove_implitic()\u003c/code\u003e where a truncated buffer\nwasn't detected. This can lead to high level functions, like\n\u003ccode\u003eSigningKey.from_der()\u003c/code\u003e to raise unexpected exceptions.\n(Mohamed Abdelaal (0xmrma))\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI to use newer version of Ubuntu.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.1 (13 Mar 2025)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eder.remove_implitic\u003c/code\u003e and \u003ccode\u003eder.encode_implicit\u003c/code\u003e for decoding and\nencoding DER IMPLICIT values with custom tag values and arbitrary\nclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMinor fixes around arithmetic with curves that have non-prime order\n(useful for experimentation, not practical deployments)\u003c/li\u003e\n\u003cli\u003eFix arithmetic to work with curves that have (0, 0) on the curve\u003c/li\u003e\n\u003cli\u003eFix canonicalization of signatures when \u003ccode\u003es\u003c/code\u003e is just slightly\nabove half of curve order\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped official support for Python 3.5 (again, issues with CI, support\nfor Python 2.6 and Python 2.7 is unchanged)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOfficialy support Python 3.12 and 3.13 (add them to CI)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoval of few more unnecessary \u003ccode\u003esix.b\u003c/code\u003e literals (Alexandre Detiste)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix typos in warning messages\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelease 0.19.0 (08 Apr 2024)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew API:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eto_ssh\u003c/code\u003e in \u003ccode\u003eVerifyingKey\u003c/code\u003e and \u003ccode\u003eSigningKey\u003c/code\u003e, supports Ed25519 keys only\n(Pablo Mazzini)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for twisted Brainpool curves\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDoc fix:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix curve equation in glossary\u003c/li\u003e\n\u003cli\u003eDocumentation for signature encoding and signature decoding functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped official support for 3.3 and 3.4 (because of problems running them\nin CI, not because it's actually incompatible; support for 2.6 and 2.7 is\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/tlsfuzzer/python-ecdsa/commit/bd66899550d7185939bf27b75713a2ac9325a9d3\"\u003e\u003ccode\u003ebd66899\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/9c046ee7f61649a8a43d3f6f9c64f13e76e148db\"\u003e\u003ccode\u003e9c046ee\u003c/code\u003e\u003c/a\u003e tests: reject truncated DER lengths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/acc40fdaf7bb09aafc912a687ca6ed063ecaface\"\u003e\u003ccode\u003eacc40fd\u003c/code\u003e\u003c/a\u003e der: reject truncated lengths in octet/implicit/constructed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/55aca7830c41af8d6b66ce2ba71fb9aac35085ec\"\u003e\u003ccode\u003e55aca78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tlsfuzzer/python-ecdsa/issues/363\"\u003e#363\u003c/a\u003e from gstarovo/ubuntu20-deprecation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/commit/c4f0df174ad3ae75e59f4e9f47d4a912f5fe21cf\"\u003e\u003ccode\u003ec4f0df1\u003c/code\u003e\u003c/a\u003e chore: change to ubuntu-22 since u-20 is deprecated\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tlsfuzzer/python-ecdsa/compare/python-ecdsa-0.19.1...python-ecdsa-0.19.2\"\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.0\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.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\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003e@app.vibe()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15280\"\u003e#15280\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/vibe/\"\u003eVibe Coding\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo for \u003ccode\u003eclient_secret\u003c/code\u003e in OAuth2 form docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14946\"\u003e#14946\u003c/a\u003e 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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15279\"\u003e#15279\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 orjson from 3.11.7 to 3.11.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15276\"\u003e#15276\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 ruff from 0.15.0 to 0.15.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15277\"\u003e#15277\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15274\"\u003e#15274\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 fastmcp from 2.14.5 to 3.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15267\"\u003e#15267\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 FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15270\"\u003e#15270\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 requests from 2.32.5 to 2.33.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15228\"\u003e#15228\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 ty check to \u003ccode\u003elint.sh\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15136\"\u003e#15136\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.2\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Increase lower bound to \u003ccode\u003epydantic \u0026gt;=2.9.0.\u003c/code\u003e and fix the test suite. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15139\"\u003e#15139\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\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add missing last release notes dates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15202\"\u003e#15202\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 for contributors and team members regarding translation PRs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15200\"\u003e#15200\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 code blocks in reference docs overflowing table width. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15094\"\u003e#15094\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 duplicated words in docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15116\"\u003e#15116\u003c/a\u003e by \u003ca href=\"https://github.com/AhsanSheraz\"\u003e\u003ccode\u003e@​AhsanSheraz\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs for \u003ccode\u003epyproject.toml\u003c/code\u003e with \u003ccode\u003eentrypoint\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15075\"\u003e#15075\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 links in docs to no longer use the classes external-link and internal-link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15061\"\u003e#15061\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\u003c!-- 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/708606c982cf35718cb2214c0bb9261cf548f042\"\u003e\u003ccode\u003e708606c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/13be6a3a0f12d3f36c286196ef555dd51dc09edb\"\u003e\u003ccode\u003e13be6a3\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b264878d71b2dc0e9e0f90ef15459d4302a7f9c\"\u003e\u003ccode\u003e4b26487\u003c/code\u003e\u003c/a\u003e ⬆️ Support free-threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15149\"\u003e#15149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f796c346a8537876de43729ff1ca1409d4648893\"\u003e\u003ccode\u003ef796c34\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/09d1d1cb7073b3c7bd1f58fcf6faefa9b2c29de4\"\u003e\u003ccode\u003e09d1d1c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae4e45c5cc20a1e1503fbcab2369821d188feb09\"\u003e\u003ccode\u003eae4e45c\u003c/code\u003e\u003c/a\u003e 🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15363\"\u003e#15363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9653034b8d459607a4b7f761e6c23a6f287fa5fa\"\u003e\u003ccode\u003e9653034\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f9a102faf071dbfa812a3af88d7d309d2ded4a6\"\u003e\u003ccode\u003e6f9a102\u003c/code\u003e\u003c/a\u003e ⬆ Bump cryptography from 46.0.5 to 46.0.7 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15314\"\u003e#15314\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/eba8942c81dbf990d25fbae34e6601bdbc21e74b\"\u003e\u003ccode\u003eeba8942\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/77d080caf850b8af5c0f467389edf03c057c7697\"\u003e\u003ccode\u003e77d080c\u003c/code\u003e\u003c/a\u003e ⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15309\"\u003e#15309\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.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2026.1.0 to 2026.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/49e6189b2cd8ee95b9357bff6a5671ea3b32c2ca\"\u003e\u003ccode\u003e49e6189\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2005\"\u003e#2005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/e73753a3c9086398a54942d26f7bc4a7232ac336\"\u003e\u003ccode\u003ee73753a\u003c/code\u003e\u003c/a\u003e Remove the deprecated 'pyxet' from the list of libraries (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2001\"\u003e#2001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/4bd065327f496fac714c9891111bc67c8d8cceae\"\u003e\u003ccode\u003e4bd0653\u003c/code\u003e\u003c/a\u003e conf should attempt types (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2004\"\u003e#2004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/463a1f08b52e2637728a28e1371577e8ea21496d\"\u003e\u003ccode\u003e463a1f0\u003c/code\u003e\u003c/a\u003e fix: allow withdirs parameter in glob for AbstractFileSystem (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1998\"\u003e#1998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/19e3cfe92b1bad9f759b4a399c3fbbb518e92455\"\u003e\u003ccode\u003e19e3cfe\u003c/code\u003e\u003c/a\u003e Fix typos (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2003\"\u003e#2003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/90bcbba391bddef400dde62e03c2eea9a2bdbd3d\"\u003e\u003ccode\u003e90bcbba\u003c/code\u003e\u003c/a\u003e fix typo in async docs: 'is' -\u0026gt; 'if' (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1992\"\u003e#1992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/846c9aa2e1eefe976f4c61bd954e7683ae9e7bb2\"\u003e\u003ccode\u003e846c9aa\u003c/code\u003e\u003c/a\u003e Apply \u003ccode\u003elru_cache\u003c/code\u003e manually per \u003ccode\u003eLazyReferenceMapper\u003c/code\u003e instance (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1985\"\u003e#1985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/fa850c13440b9a649b41afce8f0f4ecca73f9d73\"\u003e\u003ccode\u003efa850c1\u003c/code\u003e\u003c/a\u003e fix putting multiple files using SFTP (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1991\"\u003e#1991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/e6668a146cd07b9f50530c49ea3916d8ab13e169\"\u003e\u003ccode\u003ee6668a1\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1989\"\u003e#1989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/b6bd0752c1f133fb5005b4b21c065bde76f2c52b\"\u003e\u003ccode\u003eb6bd075\u003c/code\u003e\u003c/a\u003e fix parquet tests (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1988\"\u003e#1988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fsspec/filesystem_spec/compare/2026.1.0...2026.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.2 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.2...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jiter` from 0.12.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/dcdc93df6b9c6eb53facb0fff725069d9528d735\"\u003e\u003ccode\u003edcdc93d\u003c/code\u003e\u003c/a\u003e Prepare release v0.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/974695165327d19c93eb7b6030050c6555125ff2\"\u003e\u003ccode\u003e9746951\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/7f311e91b35e9896a43d0f57e7a3ca905efb1a5b\"\u003e\u003ccode\u003e7f311e9\u003c/code\u003e\u003c/a\u003e Use Python 3.13 in Wasm workflow (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/246\"\u003e#246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/52d6f7df7d7eb94ec8cc3307d466e49ef98fdf60\"\u003e\u003ccode\u003e52d6f7d\u003c/code\u003e\u003c/a\u003e Update pyodide to 0.28 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/40c53b38ef8049e222f11ed345f2309ad3e5e249\"\u003e\u003ccode\u003e40c53b3\u003c/code\u003e\u003c/a\u003e remove hyperlint (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/891a4d4f127b6d720439755c20e7193ad83531f9\"\u003e\u003ccode\u003e891a4d4\u003c/code\u003e\u003c/a\u003e Update to edition 2024, MSRV 1.88 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/b14af5e412454275d6a303f4517faec74bfcc4c1\"\u003e\u003ccode\u003eb14af5e\u003c/code\u003e\u003c/a\u003e Avoid stack overflow in \u003ccode\u003ePyStringCache\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/1764e65598dc197402769a054160583c26da9ef8\"\u003e\u003ccode\u003e1764e65\u003c/code\u003e\u003c/a\u003e Introduce zizmor (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/29a5e6dd444c950d57ef347ff42f4015174e7d27\"\u003e\u003ccode\u003e29a5e6d\u003c/code\u003e\u003c/a\u003e Add yamlfmt (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/cb40f58b9d3baf89d3a68b1ee9ce4919a592025e\"\u003e\u003ccode\u003ecb40f58\u003c/code\u003e\u003c/a\u003e Modernize project setup using uv (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/240\"\u003e#240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/jiter/compare/v0.12.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.0.2 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.0 (2026-04-17)\u003c/h1\u003e\n\u003cp\u003eThis release fixes a possible external entity injection (XXE) vulnerability in\n\u003ccode\u003eiterparse()\u003c/code\u003e and the \u003ccode\u003eETCompatXMLParser\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eGH#486: The HTML ARIA accessibility attributes were added to the set of safe attributes\nin \u003ccode\u003elxml.html.defs\u003c/code\u003e.  This allows \u003ccode\u003elxml_html_clean\u003c/code\u003e to pass them through.\nPatch by oomsveta.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe default chunk size for reading from file-likes in \u003ccode\u003eiterparse()\u003c/code\u003e is now configurable\nwith a new \u003ccode\u003echunk_size\u003c/code\u003e argument.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2146291: The \u003ccode\u003eresolve_entities\u003c/code\u003e option was still set to \u003ccode\u003eTrue\u003c/code\u003e for\n\u003ccode\u003eiterparse\u003c/code\u003e and \u003ccode\u003eETCompatXMLParser\u003c/code\u003e, allowing for external entity injection (XXE)\nwhen using these parsers without setting this option explicitly.\nThe default was now changed to \u003ccode\u003e'internal'\u003c/code\u003e only (as for the normal XML and HTML parsers\nsince lxml 5.0).\nIssue found by Sihao Qiu as CVE-2026-41066.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.0.4 (2026-04-12)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2148019: Spurious MemoryError during namespace cleanup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.0.3 (2026-04-09)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSeveral out of memory error cases now raise \u003ccode\u003eMemoryError\u003c/code\u003e that were not handled before.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSlicing with large step values (outside of \u003ccode\u003e+/- sys.maxsize\u003c/code\u003e) could trigger undefined C behaviour.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLP#2125399: Some failing tests were fixed or disabled in PyPy.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLP#2138421: Memory leak in error cases when setting the \u003ccode\u003epublic_id\u003c/code\u003e or \u003ccode\u003esystem_url\u003c/code\u003e of a document.\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/lxml/lxml/commit/43722f4402afa48b7890a96ce012eb0b9b1af5be\"\u003e\u003ccode\u003e43722f4\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/87470409b17188a5a7dbefcfa124af9cd792ffaa\"\u003e\u003ccode\u003e8747040\u003c/code\u003e\u003c/a\u003e Name version of option change in docstring.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6c36e6cef77db5087a1fff1a0d1ca8fed963afe7\"\u003e\u003ccode\u003e6c36e6c\u003c/code\u003e\u003c/a\u003e Fix pypistats URL in download statistics script.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c7d76d6cb817c8e1f316e43b16cab5e6ad669ad0\"\u003e\u003ccode\u003ec7d76d6\u003c/code\u003e\u003c/a\u003e Change security policy to point to Github security advisories.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/378ccf82db8160928807c55ed580c0443aa94f42\"\u003e\u003ccode\u003e378ccf8\u003c/code\u003e\u003c/a\u003e Update project income report.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/315270b810a9e3276c60daba549299d204ac962b\"\u003e\u003ccode\u003e315270b\u003c/code\u003e\u003c/a\u003e Docs: Reduce TOC depth of package pages and move module contents first.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6dbba7f3c72f655b05b26ef453fdee31af13ccf5\"\u003e\u003ccode\u003e6dbba7f\u003c/code\u003e\u003c/a\u003e Docs: Show current year in copyright line.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/e4385bfa5d79527350d5ef17372fb70ba80b4cce\"\u003e\u003ccode\u003ee4385bf\u003c/code\u003e\u003c/a\u003e Update project income report.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/5bed1e1a227cd9ba5a879aaeacdf504093a3f6e8\"\u003e\u003ccode\u003e5bed1e1\u003c/code\u003e\u003c/a\u003e Validate file hashes in release download script.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c13ee10a429f1144779bb1cbf6ae3bec808ae9c1\"\u003e\u003ccode\u003ec13ee10\u003c/code\u003e\u003c/a\u003e Prepare release of 6.1.0.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lxml/lxml/compare/lxml-6.0.2...lxml-6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.2.0 to 5.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.1] - 2026-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\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/hajimes/mmh3/commit/a4c44d81a8dc433ac50977425d7a5cf27cea9f0c\"\u003e\u003ccode\u003ea4c44d8\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 5.2.1 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c83701d471d557594ab7f8003c13a476057fa7b1\"\u003e\u003ccode\u003ec83701d\u003c/code\u003e\u003c/a\u003e ci: update workflow files (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/d4311b2d97b0f965aec857d94fa19aa0cd70ef8a\"\u003e\u003ccode\u003ed4311b2\u003c/code\u003e\u003c/a\u003e style: migrate to Ruff (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/25f98341e1ed5b5de9f1c7c28d67265501506281\"\u003e\u003ccode\u003e25f9834\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c4079917eadce86025724913e0cb620948e1199f\"\u003e\u003ccode\u003ec407991\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/ee3a78a1fe3f82c7e2018f290d6ab262603d24dd\"\u003e\u003ccode\u003eee3a78a\u003c/code\u003e\u003c/a\u003e ci: update wheel configs (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/60957d75f0c30cf25d1f5354f5a5ac0febd952e3\"\u003e\u003ccode\u003e60957d7\u003c/code\u003e\u003c/a\u003e fix: modify sed commands for cross-platform builds (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/da3bb5f0aa7a004b2ae3a5d0eb3d06c05f370130\"\u003e\u003ccode\u003eda3bb5f\u003c/code\u003e\u003c/a\u003e Switch back to workflow_dispatch for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/bdaedf92e861df6eab2e3b229ce92fc688fa8f79\"\u003e\u003ccode\u003ebdaedf9\u003c/code\u003e\u003c/a\u003e Bump pyperf in the dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/3342d17e5315fb9935f9348824c5b7acbc0b4808\"\u003e\u003ccode\u003e3342d17\u003c/code\u003e\u003c/a\u003e Bump dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nltk` from 3.9.2 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nltk/nltk/blob/develop/ChangeLog\"\u003enltk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 3.9.4 2026-03-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14\u003c/li\u003e\n\u003cli\u003eFix bug in Levenshtein distance when substitution_cost \u0026gt; 2\u003c/li\u003e\n\u003cli\u003eFix bug in Treebank detokeniser re quote ordering\u003c/li\u003e\n\u003cli\u003eFix bug in Jaro similarity for empty strings\u003c/li\u003e\n\u003cli\u003eSeveral security enhancements\u003c/li\u003e\n\u003cli\u003eFix GHSA-rf74-v2fm-23pw: unbounded recursion in JSONTaggedDecoder\u003c/li\u003e\n\u003cli\u003eImplement TextTiling vocabulary introduction method (Hearst 1997)\u003c/li\u003e\n\u003cli\u003eFix ALINE feature matrix errors and add comprehensive tests\u003c/li\u003e\n\u003cli\u003eSupport multiple VerbNet versions, fix longid/shortid regex for VerbNet ids\u003c/li\u003e\n\u003cli\u003eLet downloader fallback to md5 when sha256 is unavailable\u003c/li\u003e\n\u003cli\u003eSeveral other minor bugfixes and code cleanups\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.4:\nMin-Yen Kan, Eric Kafe, Emily Voss, bowiechen, Hrudhai01,\njancallewaert, Mr-Neutr0n, pollak.peter89, ylwango613,\u003c/p\u003e\n\u003cp\u003eVersion 3.9.3 2026-02-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2025-14009: secure ZIP extraction in nltk.downloader (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3468\"\u003e#3468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/arbitrary reads in nltk.data for protocol-less refs (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3467\"\u003e#3467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/abs paths in corpus readers and FS po...\n\n_Description has been truncated_","html_url":"https://github.com/wandile0157/smartdoc-ai-backend/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandile0157%2Fsmartdoc-ai-backend/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"}},{"old_version":"5.2.0","new_version":"5.2.1","update_type":"patch","path":null,"pr_created_at":"2026-03-09T09:48:54.000Z","version_change":"5.2.0 → 5.2.1","issue":{"uuid":"4044543812","node_id":"PR_kwDOQ9X9Ls7JBNr7","number":21,"state":"open","title":"chore(deps): bump the patch-updates group across 1 directory with 11 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-09T09:48:54.000Z","updated_at":"2026-03-09T09:48:55.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-updates","update_count":11,"packages":[{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.5","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"46.0.3","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.2.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"numpy","old_version":"2.4.1","new_version":"2.4.3","repository_url":"https://github.com/numpy/numpy"},{"name":"orjson","old_version":"3.11.5","new_version":"3.11.7","repository_url":"https://github.com/ijl/orjson"},{"name":"pillow","old_version":"12.1.0","new_version":"12.1.1","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.21","new_version":"0.0.22","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-updates group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.5` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.5` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.2.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.1` | `2.4.3` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.5` | `3.11.7` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.0` | `12.1.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.21` | `0.0.22` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.67.3` |\n\n\nUpdates `charset-normalizer` from 3.4.4 to 3.4.5\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.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\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.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\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/7411396ebd495e1abc28f5682975b5c662b2ff35\"\u003e\u003ccode\u003e7411396\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/8de6012bfdd619ab3177e0a05cb7db450b078d7e\"\u003e\u003ccode\u003e8de6012\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/713\"\u003e#713\u003c/a\u003e from jawah/release-3.4.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/39d0fba5db5d562cf6a95609d87c4834ad98181e\"\u003e\u003ccode\u003e39d0fba\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into release-3.4.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f211d4ada7afc4226b3a3b65a90fdac6099cceb4\"\u003e\u003ccode\u003ef211d4a\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/707\"\u003e#707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9123864dc43574250beb85c0774b3df7b2f252d1\"\u003e\u003ccode\u003e9123864\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.0 to 4.32.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/710\"\u003e#710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5cb1f12f77ee7052b77877fc6aa8e20317f13868\"\u003e\u003ccode\u003e5cb1f12\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/711\"\u003e#711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7e6858257bfc6a1b7e3e728b7ab0b02cc975e518\"\u003e\u003ccode\u003e7e68582\u003c/code\u003e\u003c/a\u003e :arrow_up: Update setuptools requirement from \u0026lt;=81,\u0026gt;=68 to \u0026gt;=68,\u0026lt;=82.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e1e2ccb8577e63eb2c436497d3a37100b66cf321\"\u003e\u003ccode\u003ee1e2ccb\u003c/code\u003e\u003c/a\u003e correct cp_similarity ratio ceiling (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/209f9ff8d80180b1f3032c144d073dfa3c0d17b1\"\u003e\u003ccode\u003e209f9ff\u003c/code\u003e\u003c/a\u003e fix TypeError 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\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a8503f65889b8b737e4442a3dea1c6491f4f280\"\u003e\u003ccode\u003e6a8503f\u003c/code\u003e\u003c/a\u003e Fix logger 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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...3.4.5\"\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.3 to 46.0.5\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.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003c/p\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eDropped support for win_arm64 wheels\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-3:\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/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.3...46.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.2.0 to 5.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.1] - 2026-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the Android wheel for Python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9, as it has reached the end of life on 2025-10-31.\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/hajimes/mmh3/commit/a4c44d81a8dc433ac50977425d7a5cf27cea9f0c\"\u003e\u003ccode\u003ea4c44d8\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 5.2.1 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/169\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c83701d471d557594ab7f8003c13a476057fa7b1\"\u003e\u003ccode\u003ec83701d\u003c/code\u003e\u003c/a\u003e ci: update workflow files (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/d4311b2d97b0f965aec857d94fa19aa0cd70ef8a\"\u003e\u003ccode\u003ed4311b2\u003c/code\u003e\u003c/a\u003e style: migrate to Ruff (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/25f98341e1ed5b5de9f1c7c28d67265501506281\"\u003e\u003ccode\u003e25f9834\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c4079917eadce86025724913e0cb620948e1199f\"\u003e\u003ccode\u003ec407991\u003c/code\u003e\u003c/a\u003e ci: fix dev ver for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/ee3a78a1fe3f82c7e2018f290d6ab262603d24dd\"\u003e\u003ccode\u003eee3a78a\u003c/code\u003e\u003c/a\u003e ci: update wheel configs (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/60957d75f0c30cf25d1f5354f5a5ac0febd952e3\"\u003e\u003ccode\u003e60957d7\u003c/code\u003e\u003c/a\u003e fix: modify sed commands for cross-platform builds (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/da3bb5f0aa7a004b2ae3a5d0eb3d06c05f370130\"\u003e\u003ccode\u003eda3bb5f\u003c/code\u003e\u003c/a\u003e Switch back to workflow_dispatch for TestPyPI (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/bdaedf92e861df6eab2e3b229ce92fc688fa8f79\"\u003e\u003ccode\u003ebdaedf9\u003c/code\u003e\u003c/a\u003e Bump pyperf in the dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/3342d17e5315fb9935f9348824c5b7acbc0b4808\"\u003e\u003ccode\u003e3342d17\u003c/code\u003e\u003c/a\u003e Bump dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.2.0...v5.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `multidict` from 6.7.0 to 6.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/multidict/releases\"\u003emultidict's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.7.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed slow memory leak caused by identity by adding \u003ccode\u003ePy_DECREF\u003c/code\u003e to identity value before leaving \u003ccode\u003emd_pop_one\u003c/code\u003e on success\n-- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1284\"\u003e#1284\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/multidict/blob/master/CHANGES.rst\"\u003emultidict's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.7.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003e(2026-01-25)\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed slow memory leak caused by identity by adding \u003ccode\u003ePy_DECREF\u003c/code\u003e to identity value before leaving \u003ccode\u003emd_pop_one\u003c/code\u003e on success\n-- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n:issue:\u003ccode\u003e1284\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/39d3c322f6a9e824beee9b6f178e3166205f0f59\"\u003e\u003ccode\u003e39d3c32\u003c/code\u003e\u003c/a\u003e Release 6.7.1 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1289\"\u003e#1289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/77bb95e83c226c3557015d055a1ce4a29889d49e\"\u003e\u003ccode\u003e77bb95e\u003c/code\u003e\u003c/a\u003e Fix memory leak caused by identity when default value is inplace (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1284\"\u003e#1284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/87dd4a49a5e8d5b01a8d801cac0c92984726f411\"\u003e\u003ccode\u003e87dd4a4\u003c/code\u003e\u003c/a\u003e Bump dependabot/fetch-metadata from 2.4.0 to 2.5.0 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/6c764124a79da8f700faa1e3638311c58828947e\"\u003e\u003ccode\u003e6c76412\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/b91a033a29f360e76a8a24b92d50120d9cd08065\"\u003e\u003ccode\u003eb91a033\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 6 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1277\"\u003e#1277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/84bf82c0e2ec68919e7f3b7c5c7388a82f4737ee\"\u003e\u003ccode\u003e84bf82c\u003c/code\u003e\u003c/a\u003e Bump psutil from 7.1.3 to 7.2.1 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1279\"\u003e#1279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/3f7b3cec6a5c23a100d972a667e7f67b84809bb3\"\u003e\u003ccode\u003e3f7b3ce\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 3.3.0 to 3.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/bbae9027cc99e23fc1ab98d97ed0adcd644c32c8\"\u003e\u003ccode\u003ebbae902\u003c/code\u003e\u003c/a\u003e Bump sigstore/gh-action-sigstore-python from 3.1.0 to 3.2.0 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/000b5b0d25b3fc672c4226615f52a7d0cd6c2c96\"\u003e\u003ccode\u003e000b5b0\u003c/code\u003e\u003c/a\u003e Remove follow_untyped_imports for mypy-sphinx (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1286\"\u003e#1286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/multidict/commit/3d2d63044c98c8ede9204e8a9685921763cc0d4e\"\u003e\u003ccode\u003e3d2d630\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/aio-libs/multidict/issues/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/multidict/compare/v6.7.0...v6.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.1 to 2.4.3\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.2 (Feb 1, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.2 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.2 is a patch release that fixes bugs discovered after the\n2.4.1 release. Highlights are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixes memory leaks\u003c/li\u003e\n\u003cli\u003eUpdates OpenBLAS to fix hangs\u003c/li\u003e\n\u003c/ul\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\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eDaniel Tang +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKumar Aditya\u003c/li\u003e\n\u003cli\u003eMatti Picus\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eVikram Kumar +\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 12 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/30629\"\u003e#30629\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/30636\"\u003e#30636\u003c/a\u003e: TYP: \u003ccode\u003earange\u003c/code\u003e: accept datetime strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30657\"\u003e#30657\u003c/a\u003e: MAINT: avoid possible race condition by not touching \u003ccode\u003eos.environ\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30700\"\u003e#30700\u003c/a\u003e: BUG: validate contraction axes in tensordot (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30521\"\u003e#30521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30701\"\u003e#30701\u003c/a\u003e: DOC: __array_namespace__info__: set_module not __module__ (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30679\"\u003e#30679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30702\"\u003e#30702\u003c/a\u003e: BUG: fix free-threaded PyObject layout in replace_scalar_type_names...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30703\"\u003e#30703\u003c/a\u003e: TST: fix limited API example in tests for latest Cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30709\"\u003e#30709\u003c/a\u003e: BUG: Fix some bugs found via valgrind (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30680\"\u003e#30680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30712\"\u003e#30712\u003c/a\u003e: MAINT: replace ob_type access with Py_TYPE in PyArray_CheckExact\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30713\"\u003e#30713\u003c/a\u003e: BUG: Fixup the quantile promotion fixup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30736\"\u003e#30736\u003c/a\u003e: BUG: fix thread safety of \u003ccode\u003earray_getbuffer\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30667\"\u003e#30667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30737\"\u003e#30737\u003c/a\u003e: backport scipy-openblas version change\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/numpy/numpy/commit/8bcb2e72e67c343e55165e6064fe6a9dc011e954\"\u003e\u003ccode\u003e8bcb2e7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30974\"\u003e#30974\u003c/a\u003e from charris/prepare-2.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9a2b5eef3b142e852c0092d449b2ea54e8d87314\"\u003e\u003ccode\u003e9a2b5ee\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.3 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/a822ac28798a9a7ed1094879caaf885e282ccb6c\"\u003e\u003ccode\u003ea822ac2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30973\"\u003e#30973\u003c/a\u003e from charris/backport-30961\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/039bf549aad7ac149587884582e561f555ed770a\"\u003e\u003ccode\u003e039bf54\u003c/code\u003e\u003c/a\u003e MAINT: update openblas (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30961\"\u003e#30961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/254bafa78941aa1ceb9f4680c9f07e9ec6bb94b0\"\u003e\u003ccode\u003e254bafa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30955\"\u003e#30955\u003c/a\u003e from charris/backport-30879\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/0cc7d38c659741ddece03e59dad154bf3006bf49\"\u003e\u003ccode\u003e0cc7d38\u003c/code\u003e\u003c/a\u003e ENH: Test .kind not .char in np.testing.assert_equal (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30879\"\u003e#30879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9ee571dee7982c1e8369148c1585a07e9bd878b8\"\u003e\u003ccode\u003e9ee571d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30957\"\u003e#30957\u003c/a\u003e from charris/backport-30918\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/f302a1699020958b2ee02a3eb4177160f8153556\"\u003e\u003ccode\u003ef302a16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30958\"\u003e#30958\u003c/a\u003e from charris/backport-30938\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d240a09784a41e9f7b00de2d9d24b2a1d46d171b\"\u003e\u003ccode\u003ed240a09\u003c/code\u003e\u003c/a\u003e MAINT: Don't use vulture 2.15, it has false positives\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/4fc08e9ebfd25530345fbd8f03bcd60fb7b0fbda\"\u003e\u003ccode\u003e4fc08e9\u003c/code\u003e\u003c/a\u003e MAINT: Don't use vulture 2.15, it has false positives\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.4.1...v2.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.11.5 to 3.11.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\u003c/code\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/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.6 - 2026-01-29\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eorjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5.\u003c/li\u003e\n\u003cli\u003eBuild now depends on Rust 1.89 or later instead of 1.85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix sporadic crash serializing deeply nested \u003ccode\u003elist\u003c/code\u003e of \u003ccode\u003edict\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/ijl/orjson/commit/ec2b066cae79ae4a90ed126ac5723335dd99e408\"\u003e\u003ccode\u003eec2b066\u003c/code\u003e\u003c/a\u003e 3.11.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1ca01f78cf4198ec37407d83713afa6e5c53dbf9\"\u003e\u003ccode\u003e1ca01f7\u003c/code\u003e\u003c/a\u003e zmij\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/1716a226bd1f38db01503f30cd37b0efec48d88e\"\u003e\u003ccode\u003e1716a22\u003c/code\u003e\u003c/a\u003e cargo update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/ec02024c3837255064f248c0d2d331319b75e9ad\"\u003e\u003ccode\u003eec02024\u003c/code\u003e\u003c/a\u003e 3.11.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d58168733189f82b3fd0c058dff73e05d09202e6\"\u003e\u003ccode\u003ed581687\u003c/code\u003e\u003c/a\u003e build, clippy misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4105b29b2275f200f6fae01349bef02ccf1bc2e2\"\u003e\u003ccode\u003e4105b29\u003c/code\u003e\u003c/a\u003e writer::num\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/62bb185b70785ded49c79c26f8c9781f1e6fe370\"\u003e\u003ccode\u003e62bb185\u003c/code\u003e\u003c/a\u003e Fix sporadic crash on serializing object close\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d860078a973f44401265c5c4ad12a7dbe4f839ad\"\u003e\u003ccode\u003ed860078\u003c/code\u003e\u003c/a\u003e PyRef idiom refactors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/343ae2f148197918aba9f8562db42c364620e4b8\"\u003e\u003ccode\u003e343ae2f\u003c/code\u003e\u003c/a\u003e Deserializer, Utf8Buffer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/7835f58d1c56947d1cf7a18acdfc07a2bca9b0f2\"\u003e\u003ccode\u003e7835f58\u003c/code\u003e\u003c/a\u003e PyBytesRef and other input refactor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.5...3.11.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.1.0 to 12.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.1.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePatch libavif for svt-av1 4.0 compatibility \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9413\"\u003e#9413\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOB Write with invalid tile extents \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\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/python-pillow/Pillow/commit/5158d98c807e719c5938aa3886913ef0ea6814e9\"\u003e\u003ccode\u003e5158d98\u003c/code\u003e\u003c/a\u003e 12.1.1 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/9000313cc5d4a31bdcdd6d7f0781101abab553aa\"\u003e\u003ccode\u003e9000313\u003c/code\u003e\u003c/a\u003e Fix OOB Write with invalid tile extents (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\"\u003e#9427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/cd0111849fb32c40860e3ee3d57b9b1cee4260cf\"\u003e\u003ccode\u003ecd01118\u003c/code\u003e\u003c/a\u003e Patch libavif for svt-av1 4.0 compatibility\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.1.0...12.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions 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/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\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/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.21 to 0.0.22\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.22\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop directory path from filename in \u003ccode\u003eFile\u003c/code\u003e \u003ca href=\"https://github.com/Kludex/python-multipart/commit/9433f4bbc9652bdde82bbe380984e32f8cfc89c4\"\u003e9433f4b\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.21...0.0.22\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.21...0.0.22\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/Kludex/python-multipart/blob/master/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.22 (2026-01-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop directory path from filename in \u003ccode\u003eFile\u003c/code\u003e \u003ca href=\"https://github.com/Kludex/python-multipart/commit/9433f4bbc9652bdde82bbe380984e32f8cfc89c4\"\u003e9433f4b\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/Kludex/python-multipart/commit/bea7bbb2904da8ce39123a845088dc72464eaddf\"\u003e\u003ccode\u003ebea7bbb\u003c/code\u003e\u003c/a\u003e Version 0.0.22 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0fb59a9df0f273bfde99740b302ccb2ae45e2b8a\"\u003e\u003ccode\u003e0fb59a9\u003c/code\u003e\u003c/a\u003e chore: add return type on test (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/9433f4bbc9652bdde82bbe380984e32f8cfc89c4\"\u003e\u003ccode\u003e9433f4b\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/d5c91ecb0aa1cae03fe2d9811d193c952e714f17\"\u003e\u003ccode\u003ed5c91ec\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/5a90631b484f8d3284b691d453c24be3db57f5cb\"\u003e\u003ccode\u003e5a90631\u003c/code\u003e\u003c/a\u003e bump uv (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.21...0.0.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tenacity` from 9.1.2 to 9.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jd/tenacity/releases\"\u003etenacity's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eretry()\u003c/code\u003e annotations with async \u003ccode\u003esleep=\u003c/code\u003e function by \u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/555\"\u003ejd/tenacity#555\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.3...9.1.4\"\u003ehttps://github.com/jd/tenacity/compare/9.1.3...9.1.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e9.1.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eApply formatting to num seconds in before_sleep_log by \u003ca href=\"https://github.com/aguinane\"\u003e\u003ccode\u003e@​aguinane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/489\"\u003ejd/tenacity#489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/sandrobonazzola\"\u003e\u003ccode\u003e@​sandrobonazzola\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/528\"\u003ejd/tenacity#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTyping: Accept non-standard logger in helpers logging something by \u003ca href=\"https://github.com/k4nar\"\u003e\u003ccode\u003e@​k4nar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/540\"\u003ejd/tenacity#540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(wait): add \u003ccode\u003ewait_exception\u003c/code\u003e strategy by \u003ca href=\"https://github.com/capitan-davide\"\u003e\u003ccode\u003e@​capitan-davide\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/541\"\u003ejd/tenacity#541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix syntax error in wait_chain docstring example by \u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/548\"\u003ejd/tenacity#548\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: drop Python 3.9 support (EOL) by \u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/552\"\u003ejd/tenacity#552\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport async sleep for sync fn-to-retry by \u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/551\"\u003ejd/tenacity#551\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/aguinane\"\u003e\u003ccode\u003e@​aguinane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/489\"\u003ejd/tenacity#489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sandrobonazzola\"\u003e\u003ccode\u003e@​sandrobonazzola\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/528\"\u003ejd/tenacity#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k4nar\"\u003e\u003ccode\u003e@​k4nar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/540\"\u003ejd/tenacity#540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/capitan-davide\"\u003e\u003ccode\u003e@​capitan-davide\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/541\"\u003ejd/tenacity#541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/548\"\u003ejd/tenacity#548\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Zac-HD\"\u003e\u003ccode\u003e@​Zac-HD\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/552\"\u003ejd/tenacity#552\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.2...9.1.3\"\u003ehttps://github.com/jd/tenacity/compare/9.1.2...9.1.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/jd/tenacity/commit/d4e868d6b8368c00b5a1fad54de36c2c8c3a0fb3\"\u003e\u003ccode\u003ed4e868d\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eretry()\u003c/code\u003e annotations with async \u003ccode\u003esleep=\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/24415ebbca6ecafdf870af06441656dd96149d1d\"\u003e\u003ccode\u003e24415eb\u003c/code\u003e\u003c/a\u003e support async sleep for sync fn (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/3bf33b44096077a0608855f6a380fd8a25fa6f26\"\u003e\u003ccode\u003e3bf33b4\u003c/code\u003e\u003c/a\u003e chore: drop Python 3.9 support (EOL) (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/7027da31d27155c7b1831e292a29575af7b5c2b1\"\u003e\u003ccode\u003e7027da3\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/21ae7d0cc27069defd111e8ec81407f6d14089f6\"\u003e\u003ccode\u003e21ae7d0\u003c/code\u003e\u003c/a\u003e docs: fix syntax error in wait_chain docstring example (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/ef12c9ed1df4dec3748b1fa9304527245b041d2d\"\u003e\u003ccode\u003eef12c9e\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/checkout in the github-actions group (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/c35a4b341ef5e553c670290fbd8835b59d5f08a3\"\u003e\u003ccode\u003ec35a4b3\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/e792bbaf0cab3685c8000899cb9f61e04d6f3e23\"\u003e\u003ccode\u003ee792bba\u003c/code\u003e\u003c/a\u003e ci: fix mypy (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/0f55245b8da5c4cc8385c2f692164a6ff52cd88e\"\u003e\u003ccode\u003e0f55245\u003c/code\u003e\u003c/a\u003e ci: remove reno requirements (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/815c34fec2c8d64fe2bc8a6bdd79bfb41f1938c6\"\u003e\u003ccode\u003e815c34f\u003c/code\u003e\u003c/a\u003e feat(wait): add \u003ccode\u003ewait_exception\u003c/code\u003e strategy (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/541\"\u003e#541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.2...9.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tqdm` from 4.67.1 to 4.67.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tqdm/tqdm/releases\"\u003etqdm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etqdm v4.67.3 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix py3.7 dependencies (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1706\"\u003e#1706\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.67.2 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esupport \u003ccode\u003epandas\u0026gt;=3\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1703\"\u003e#1703\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1701\"\u003e#1701\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1650\"\u003e#1650\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1700\"\u003e#1700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003eformat_interval\u003c/code\u003e for negative numbers (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emisc linting\u003c/li\u003e\n\u003cli\u003eframework updates (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1704\"\u003e#1704\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003ebump CI workflow \u0026amp; \u003ccode\u003epre-commit\u003c/code\u003e dependencies\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003epyupgrade\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd py3.13 support\u003c/li\u003e\n\u003cli\u003efix py3.7 tests\u003c/li\u003e\n\u003cli\u003eupdate \u003ccode\u003esetuptools-scm\u003c/code\u003e usage\u003c/li\u003e\n\u003cli\u003esupport auto-dedented docstrings when building docs in py3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003etests: relax flaky benchmarks\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/tqdm/tqdm/commit/75bdb6c379bcfc6c592b6342dc791a092b5d6ae0\"\u003e\u003ccode\u003e75bdb6c\u003c/code\u003e\u003c/a\u003e fix py3.7 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/09a863bf4658f19a911eb7d3fa4f9e4eb0b33496\"\u003e\u003ccode\u003e09a863b\u003c/code\u003e\u003c/a\u003e bump version, merge pull request \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1704\"\u003e#1704\u003c/a\u003e from tqdm/devel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/33d24cdbd4bd958cdc6cecbbcc903b52f8c37a05\"\u003e\u003ccode\u003e33d24cd\u003c/code\u003e\u003c/a\u003e update pyproject syntax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/70b912484824f130be0506c2e139a1f764751fac\"\u003e\u003ccode\u003e70b9124\u003c/code\u003e\u003c/a\u003e add py3.13 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/a74d8f8d97d2f77937e09a32a9e1975e167261d6\"\u003e\u003ccode\u003ea74d8f8\u003c/code\u003e\u003c/a\u003e drop _dist_ver\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/14d72e2c18ba34363d629a43794a47513a9aa368\"\u003e\u003ccode\u003e14d72e2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1703\"\u003e#1703\u003c/a\u003e from wingding12/fix-pandas-3.0-and-negative-interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/a69dac84b3d2e7ab23dbfcccae29b28a753ee5eb\"\u003e\u003ccode\u003ea69dac8\u003c/code\u003e\u003c/a\u003e fix dedented docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/a986d228405324ca422050e4787118c187cb870f\"\u003e\u003ccode\u003ea986d22\u003c/code\u003e\u003c/a\u003e tests: fix pandas deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/bb7aa4ddb706b9d99b72a811eb62ea35553ff1e2\"\u003e\u003ccode\u003ebb7aa4d\u003c/code\u003e\u003c/a\u003e tests: fix pandas deprecated applymap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/0647db1c7480a21eb08ba214b0756d232e079e3a\"\u003e\u003ccode\u003e0647db1\u003c/code\u003e\u003c/a\u003e misc tidy\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tqdm/tqdm/compare/v4.67.1...v4.67.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/renzotjpro/ecommerce_support/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/renzotjpro%2Fecommerce_support/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2026-02-10T00:00:02.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"3918736506","node_id":"PR_kwDOHUSeqs7CmuGz","number":437,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-10T00:00:02.000Z","updated_at":"2026-02-10T00:05:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":21,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.9.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-httpserver","old_version":"1.1.3","new_version":"1.1.4","repository_url":"https://github.com/csernazs/pytest-httpserver"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.4"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.0","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.9.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-httpserver](https://github.com/csernazs/pytest-httpserver) | `1.1.3` | `1.1.4` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.4` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.0` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.9.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082\"\u003e08bc7082\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29b\"\u003e0e5ec29b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649f\"\u003e1917649f\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa5\"\u003e2bc15fa5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a\"\u003e5ac2808a\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc5\"\u003e74c9ecc5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469\"\u003e7b319469\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe\"\u003e8e21a7fe\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b\"\u003ec8dd7a0b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486b\"\u003ecdb2486b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3\"\u003edbd162b3\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b8\"\u003edbe9d8b8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396\"\u003e2ef63396\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1\"\u003e5d9fafe1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd\"\u003e721ea2dd\u003c/a\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e0e5ec29bc6a31b77bcfba4254cef5bffb199095c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003ec8dd7a0b124c395b7b60189ee78f47aba8d51f7d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e08bc7082db7392f13bc8c51511b4afa9c7b157c9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e74c9ecc54173420bfcd48498a8956088a035af50\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e7b319469d2e495ea0bf7367f3949190e8f5d9fff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e8e21a7fe54d0a043f31937671003630a1985a5d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a69195c688ed42c3604d4bfadbb602a66\"\u003e5ac2808a69195c688ed42c3604d4bfadbb602a66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3583e32e6f705a51f5c3fef333a9b89d0\"\u003edbd162b3583e32e6f705a51f5c3fef333a9b89d0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa570683ba584230c51b439d189dbdcd580\"\u003e2bc15fa570683ba584230c51b439d189dbdcd580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b89d975dfbed8c830a5687ccfafea51d5f\"\u003edbe9d8b89d975dfbed8c830a5687ccfafea51d5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649fac41481da1adea6c2a9f4ab1298a34c4\"\u003e1917649fac41481da1adea6c2a9f4ab1298a34c4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486bb051dcbfbffc2510aff6aacede5e54d3\"\u003ecdb2486bb051dcbfbffc2510aff6aacede5e54d3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange contructors of MRD and AAOW AsyncGrpcClient.grpc_client to AsyncGrpcClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1727\"\u003e#1727\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003ee730bf50c4584f737ab86b2e409ddb27b40d2cec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\"\u003e721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1466b5ccb1db4a814967a5cc8465148a2\"\u003e5d9fafe1466b5ccb1db4a814967a5cc8465148a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting in setup.py dependencies list (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1713\"\u003e#1713\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cc4831d7e253b265b0b96e08b5479f4c759be442\"\u003ecc4831d7e253b265b0b96e08b5479f4c759be442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/77c1edaa6de4058e545ad1b68bde5507b75b8e37\"\u003e\u003ccode\u003e77c1eda\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260202T123858Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1736\"\u003e#1736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e\u003ccode\u003e0e5ec29\u003c/code\u003e\u003c/a\u003e feat: add get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7a00dfb73696d6db98747509e9f2f2bd0c94c53a\"\u003e\u003ccode\u003e7a00dfb\u003c/code\u003e\u003c/a\u003e chore: Add README for running zonal buckets samples (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e\u003ccode\u003e2ef6339\u003c/code\u003e\u003c/a\u003e fix: receive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003e\u003ccode\u003ec8dd7a0\u003c/code\u003e\u003c/a\u003e feat: expose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e\u003ccode\u003e08bc708\u003c/code\u003e\u003c/a\u003e feat: update generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e\u003ccode\u003e74c9ecc\u003c/code\u003e\u003c/a\u003e feat: Move Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e\u003ccode\u003e7b31946\u003c/code\u003e\u003c/a\u003e feat: add default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003e\u003ccode\u003ee730bf5\u003c/code\u003e\u003c/a\u003e fix!: Change contructors of MRD and AAOW AsyncGrpcClient.grpc_client to Async...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e\u003ccode\u003e8e21a7f\u003c/code\u003e\u003c/a\u003e feat: expose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.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/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows 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/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.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/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache 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/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 to 7 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper 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/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action from 5 to 7 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.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/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.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/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.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/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.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/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (e...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/437","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/437","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/437/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2026-01-26T22:40:03.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"3857982199","node_id":"PR_kwDOHUSeqs6_eFIV","number":436,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-26T22:40:03.000Z","updated_at":"2026-01-26T22:50:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":20,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.8.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.2"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.8.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.2` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.8.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961be\"\u003e0e2961be\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement \u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e;append_from_file\u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956\"\u003e1333c956\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb\"\u003e139390cb\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5\"\u003e89bfe7a5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec\"\u003ea57ea0ec\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee0\"\u003ed90f0ee0\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf\"\u003ef7095faf\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b\"\u003e4a609a4b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711da\"\u003e6dc711da\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebucket:\u003c/strong\u003e Move blob fails when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\"\u003e6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16846a69f3a911844971241899f60cce14\"\u003e2d5a7b16846a69f3a911844971241899f60cce14\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b3f4ba1396825911cb02f8a9649135cd5\"\u003e4a609a4b3f4ba1396825911cb02f8a9649135cd5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/googleapis/python-storage/blob/57405e956a7ca579b20582bf6435cec42743c478/google/cloud/storage/bucket.py#L2256\"\u003emove_blob\u003c/a\u003e failure when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for partial list buckets (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1606\"\u003e#1606\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/92fc2b00429415b9fbe7cba0167778eee60449e2\"\u003e92fc2b0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake return_partial_success and unreachable fields public for list Bucket (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/323cddd5d439e04e12614106eab1928fd4008c0b\"\u003e323cddd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1612\"\u003e#1612\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDont pass credentials to StorageClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/195d644c4d4feec98e9a9cd9fad67fc774c50dc8\"\u003e195d644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.4.1...v3.5.0\"\u003e3.5.0\u003c/a\u003e (2025-11-05)\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/googleapis/python-storage/commit/16cf512c2e05a6eb0e4ba7280814886e35b2942b\"\u003e\u003ccode\u003e16cf512\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260113T144551Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/94ad8952cecfbfaf0e7917fbf4a362f4996f0c78\"\u003e\u003ccode\u003e94ad895\u003c/code\u003e\u003c/a\u003e chore(librarian): bump library version to 3.7.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e\u003ccode\u003e89bfe7a\u003c/code\u003e\u003c/a\u003e feat(experimental): flush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003e\u003ccode\u003ea57ea0e\u003c/code\u003e\u003c/a\u003e feat(experimental): add write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0c35d3f3dd767831259a188156140b18f7ff9927\"\u003e\u003ccode\u003e0c35d3f\u003c/code\u003e\u003c/a\u003e chore(tests): add test for reading unfinalized appendable objects with genera...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003e\u003ccode\u003ed90f0ee\u003c/code\u003e\u003c/a\u003e feat(experimental): add bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a994dbf9c4d6f432a5eff9da08ec88840d47c159\"\u003e\u003ccode\u003ea994dbf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;skip notification tests until b/470069573 is fixed\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1694\"\u003e#1694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dfc60b3e0167790a8ade61b1b2143f297514bdd1\"\u003e\u003ccode\u003edfc60b3\u003c/code\u003e\u003c/a\u003e chore: delete topic after creation (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1687\"\u003e#1687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e\u003ccode\u003e1333c95\u003c/code\u003e\u003c/a\u003e feat: implement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fe6d7c930bf4e83187120eda52aeaab932502e9f\"\u003e\u003ccode\u003efe6d7c9\u003c/code\u003e\u003c/a\u003e chore: optimization to reduce number of open TCP connections while running zo...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal support for Python 3.14 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/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.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/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows 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/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.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/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache 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/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 to 7 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper 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/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action from 5 to 7 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.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/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.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/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.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/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.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/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (entity.presentDetails) (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1793\"\u003e#1793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/4277ed87a0572cad92894b0b8b2b5104efe2d3f6\"\u003e\u003ccode\u003e4277ed8\u003c/code\u003e\u003c/a\u003e feat: Add work objects support (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1783\"\u003e#1783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/998ee043209ec90adaa29f12c16210f218bfbb61\"\u003e\u003ccode\u003e998ee04\u003c/code\u003e\u003c/a\u003e fix: improve the release instructions (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1792\"\u003e#1792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/21ac4f79e8e8ab6fb868682fc3814522ea37ab6a\"\u003e\u003ccode\u003e21ac4f7\u003c/code\u003e\u003c/a\u003e chore: Add .github/CODEOWNERS file (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/ae366555d6d430befd11dd2f0bf76707879635aa\"\u003e\u003ccode\u003eae36655\u003c/code\u003e\u003c/a\u003e chore(release): version 3.38.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/66b45239097983b8a0b5b82a02e694ba8f90a06e\"\u003e\u003ccode\u003e66b4523\u003c/code\u003e\u003c/a\u003e docs: link to context actions block and related reference (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1789\"\u003e#1789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9e089031db3041e1f4c7611aa023923ae586d5fa\"\u003e\u003ccode\u003e9e08903\u003c/code\u003e\u003c/a\u003e ci: upload test results using the recommended codecov action (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1787\"\u003e#1787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.5.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where pie trace \u003ccode\u003elegend\u003c/code\u003e, \u003ccode\u003eshowlegend\u003c/code\u003e attributes don't accept array values [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5464\"\u003e#5464\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5465\"\u003e#5465\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/my-tien\"\u003e\u003ccode\u003e@​my-tien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Plotly Express ignored trace-specific color sequences defined in templates via \u003ccode\u003etemplate.data.\u0026lt;trace_type\u0026gt;\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5437\"\u003e#5437\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/antonymilne\"\u003e\u003ccode\u003e@​antonymilne\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003evalidate_gantt\u003c/code\u003e function [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5386\"\u003e#5386\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/misrasaurabh1\"\u003e\u003ccode\u003e@​misrasaurabh1\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.0 to version 3.3.1. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.1\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5456\"\u003e#5456\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for arrays for the pie properties \u003ccode\u003eshowlegend\u003c/code\u003e and \u003ccode\u003elegend\u003c/code\u003e, so that these can be configured per slice. [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7580\"\u003e#7580\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.4.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable chan...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/436","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/436","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/436/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-12-22T13:25:38.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"3753802652","node_id":"PR_kwDOOaPssc66JH_l","number":75,"state":"closed","title":"Bump the python-packages group across 1 directory with 90 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T16:21:12.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-22T13:25:38.000Z","updated_at":"2026-01-12T16:21:14.000Z","time_to_close":1824934,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":90,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.12.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.0","repository_url":"https://github.com/django/asgiref"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.11.12","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":"chromadb","old_version":"1.0.8","new_version":"1.3.7","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.127.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.45.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"htmldate","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/adbar/htmldate"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"1.2.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"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":"jiter","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"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":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"networkx","old_version":"3.4.2","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.0.2","new_version":"2.4.0","repository_url":"https://github.com/numpy/numpy"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"onnxruntime","old_version":"1.21.0","new_version":"1.23.2","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.77.0","new_version":"2.14.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"7.4.2","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.7","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"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":"regex","old_version":"2024.11.6","new_version":"2025.11.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.7.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.2.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.50.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.9.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.57.3","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.20.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"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.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.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.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 90 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.0` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.3.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.127.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.12.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.45.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.72.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [htmldate](https://github.com/adbar/htmldate) | `1.9.3` | `1.9.4` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `1.2.3` |\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| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.12.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.3` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\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| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.0.2` | `2.4.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.21.0` | `1.23.2` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.14.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.60b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `7.4.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.33.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.7` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.1` |\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| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.11.3` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.30.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.3` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `4.1.0` | `5.2.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.50.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.9.1` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.57.3` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.20.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.12.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\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/agronholm/anyio/commit/bc021b634291223d6829c0a689152173443a8545\"\u003e\u003ccode\u003ebc021b6\u003c/code\u003e\u003c/a\u003e Fixed the download-artifact settings to retain the expected behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c6000aa2837f75733f3c09c454f5a31eb9f9f536\"\u003e\u003ccode\u003ec6000aa\u003c/code\u003e\u003c/a\u003e Corrected the format of the version in the changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9d1bfe0da4261bcef3c10cd31218237805a89937\"\u003e\u003ccode\u003e9d1bfe0\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/77f7ce25e12c9becf5081105a47b1914e50a3e0a\"\u003e\u003ccode\u003e77f7ce2\u003c/code\u003e\u003c/a\u003e Fixed RuntimeError while shutting down the asyncio process pool (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aecc666e6b3b40f977ee715d141bdd89711b45cb\"\u003e\u003ccode\u003eaecc666\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e5569adf98394dfabebccf215a04d05d7819b506\"\u003e\u003ccode\u003ee5569ad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dde3ab8583cb194e663f6fb87703a4a79e2701eb\"\u003e\u003ccode\u003edde3ab8\u003c/code\u003e\u003c/a\u003e Moved a changelog entry to its correct position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/250d4f183245bf7ee5ead0ff39d521cda2b8d617\"\u003e\u003ccode\u003e250d4f1\u003c/code\u003e\u003c/a\u003e Restore compatibility with pytest\u0026lt;=6.1.2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3708e227838e2f51464900cf806b25c30ca458a7\"\u003e\u003ccode\u003e3708e22\u003c/code\u003e\u003c/a\u003e Fixed a typo in the documentation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9adbe08c55e725b0388dcc4ab7556875da881a4c\"\u003e\u003ccode\u003e9adbe08\u003c/code\u003e\u003c/a\u003e Add new params to Path.glob \u0026amp; Path.rglob introduced since 3.12 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.12.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.8.1 to 3.11.0\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.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\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\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/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\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.0\"\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 `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\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/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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 `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.4\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.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\u003ch1\u003ev6.2.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003c!-- 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/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\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/af8b7d4ffa48d5947161ddb8c1ef1c60dda1e816\"\u003e\u003ccode\u003eaf8b7d4\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/372\"\u003e#372\u003c/a\u003e: Convert setup.cfg to pyproject.toml.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/20b8a192f666420a1986b793fd5846b89fdcd647\"\u003e\u003ccode\u003e20b8a19\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/370\"\u003e#370\u003c/a\u003e: Mention that using \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e with condition requires self to be...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/116fb4c3459067442d731e01a3db4694b50722f1\"\u003e\u003ccode\u003e116fb4c\u003c/code\u003e\u003c/a\u003e Minor style and readability improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/96546ea34f8c77df009fb3bc019b72b03589c3fd\"\u003e\u003ccode\u003e96546ea\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0106cc1d4764c9a94cd39a55579ce49bca9f4e1e\"\u003e\u003ccode\u003e0106cc1\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/4ee2600ab09b109f79d4ef08103240bf9f239b2d\"\u003e\u003ccode\u003e4ee2600\u003c/code\u003e\u003c/a\u003e Release v6.2.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/f1cec391fea1a1e407fe596b6e37b849adf7fce5\"\u003e\u003ccode\u003ef1cec39\u003c/code\u003e\u003c/a\u003e Minor improvements from GitHub Copilot code review.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.4\"\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 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `chromadb` from 1.0.8 to 1.3.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ecli-1.2.4\u003c/h2\u003e\n\u003cp\u003eCLI release.\u003c/p\u003e\n\u003ch2\u003e1.3.6\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.3.6\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.3.6\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-12-10T05:26\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.3.6.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.3.6\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH] Use GCS with aws-sdk-go-v2 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5878\"\u003echroma-core/chroma#5878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Refactor compactor into three chained orchestrators by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5831\"\u003echroma-core/chroma#5831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Disable S3heap service and remove nonce-related logic by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5866\"\u003echroma-core/chroma#5866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove next_run from attached_functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5871\"\u003echroma-core/chroma#5871\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Update the README with correct logo by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5888\"\u003echroma-core/chroma#5888\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Register package name for chroma-bm25 in js client, fix default-embed warning in getOrCreate by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5889\"\u003echroma-core/chroma#5889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add blank task support for ChromaCloudQwenEmbeddingFunction by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5874\"\u003echroma-core/chroma#5874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota info for concurrent reads and writes per collection by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5875\"\u003echroma-core/chroma#5875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update error message returning to give back messages from server in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5890\"\u003echroma-core/chroma#5890\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make admission controlled client generic by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5883\"\u003echroma-core/chroma#5883\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Upgrade to foyer 0.20.1 to support multi-disk by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5887\"\u003echroma-core/chroma#5887\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Agentic Search Guide by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5881\"\u003echroma-core/chroma#5881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Modified AttachFunction to do 2PC on a new is_ready column by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5872\"\u003echroma-core/chroma#5872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Make wal3::Error::Internal log where it originates. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5891\"\u003echroma-core/chroma#5891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Let Chroma Cloud EFs get API key from client by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5892\"\u003echroma-core/chroma#5892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add getCollectionByCrn api support in js client by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5894\"\u003echroma-core/chroma#5894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.1.6 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5895\"\u003echroma-core/chroma#5895\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Execute task with no backfill or incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5867\"\u003echroma-core/chroma#5867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Try shoe-horning sparse vector tokens into the metadata value. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5767\"\u003echroma-core/chroma#5767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make all functions incremental by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5893\"\u003echroma-core/chroma#5893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Take a suggestion from propel by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5901\"\u003echroma-core/chroma#5901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Put both token id and token str in the statistics by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5777\"\u003echroma-core/chroma#5777\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Introduce backfill capabilities in compactor by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5896\"\u003echroma-core/chroma#5896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Persist a backfill record on log to trigger backfill by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5897\"\u003echroma-core/chroma#5897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Refactor AttachedFunctionOrchestrator to return a FunctionContext instead of its individual fields by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5902\"\u003echroma-core/chroma#5902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add HTTP endpoint for get_attached_function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5898\"\u003echroma-core/chroma#5898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add Python wrapper API for statistics function by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5899\"\u003echroma-core/chroma#5899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Add test_statistics_wrapper to CI by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5903\"\u003echroma-core/chroma#5903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] - Adds YouTube video to agentic search guide page by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5905\"\u003echroma-core/chroma#5905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Sparse vector labels in python client by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5904\"\u003echroma-core/chroma#5904\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix test flake in test_task_api.py by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5907\"\u003echroma-core/chroma#5907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Upgrade foyer to “7beb132de801e410bc751ecd0318c2a6d2ecd0d3” by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5912\"\u003echroma-core/chroma#5912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add k8s multidisk support by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5913\"\u003echroma-core/chroma#5913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Make sure an input collection soft delete cascades to attached functions by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5908\"\u003echroma-core/chroma#5908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Fix authorization calls for functions API by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5915\"\u003echroma-core/chroma#5915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Have stats function paginate through output collection by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5906\"\u003echroma-core/chroma#5906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  wal3 Sometimes returns an \u0026quot;Internal\u0026quot; when it should return \u0026quot;LogContentionFailure\u0026quot; by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5916\"\u003echroma-core/chroma#5916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Document why it is a LogContentionFailure. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5920\"\u003echroma-core/chroma#5920\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/chroma-core/chroma/commit/a4e05b9df2342383ac395be8313b3e509ce725ea\"\u003e\u003ccode\u003ea4e05b9\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.2.4, Python 1.3.7, JS 3.1.8 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6032\"\u003e#6032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/b8a1b97380887580299cd099f9e933632bc204c3\"\u003e\u003ccode\u003eb8a1b97\u003c/code\u003e\u003c/a\u003e [ENH] Holiday edition CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6028\"\u003e#6028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d7d33fa73a587a81adfa43bf0c3754ba8ef6d933\"\u003e\u003ccode\u003ed7d33fa\u003c/code\u003e\u003c/a\u003e [ENH]  Add spanner emulator to the tilt config. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5987\"\u003e#5987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f45ba4e73220604a226fc9dd1b5dfd8129dc34de\"\u003e\u003ccode\u003ef45ba4e\u003c/code\u003e\u003c/a\u003e [RELEASE] Rust client 0.9.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6025\"\u003e#6025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/6405042370d0c8984732174b8647a688bc667386\"\u003e\u003ccode\u003e6405042\u003c/code\u003e\u003c/a\u003e [ENH] Make RFE tiltfile config + values overridable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6026\"\u003e#6026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/8c3eaed952ff91a48fd73ae9073ad4622997e9fc\"\u003e\u003ccode\u003e8c3eaed\u003c/code\u003e\u003c/a\u003e [ENH] Make it possible to deploy multiple chromas in Tiltfile (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5992\"\u003e#5992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4295491011a051c0289d6bbbfdc546818c6b1bb9\"\u003e\u003ccode\u003e4295491\u003c/code\u003e\u003c/a\u003e [BUG]: Fix deadlock in orchestrator test (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6020\"\u003e#6020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/5df18a8297245c2242db8e710384be9532c4a762\"\u003e\u003ccode\u003e5df18a8\u003c/code\u003e\u003c/a\u003e [ENH] Reduce max backoff retry interval in wal3 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6019\"\u003e#6019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/09545d8277eddd6a6959ec7525b3e6f7c15b4c7c\"\u003e\u003ccode\u003e09545d8\u003c/code\u003e\u003c/a\u003e [ENH] Update error message tag in wal3 writer (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6017\"\u003e#6017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/df6602421d06235182ab9a338c08b1f59711b3a3\"\u003e\u003ccode\u003edf66024\u003c/code\u003e\u003c/a\u003e [ENH] - Updates styling for code examples in light mode (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6002\"\u003e#6002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.3.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.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 regr...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-10-06T21:04:45.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"3489096185","node_id":"PR_kwDOHUSeqs6sXqmE","number":435,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T21:04:45.000Z","updated_at":"2025-10-06T23:17:40.770Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":19,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.24","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.1","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.3.3","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.24` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.1` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.3` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.3.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.24\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\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.24/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using Python 3.14 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/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.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/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.1\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.1] - 2025-10-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/commit/ecb00fe74a09c93d49bef0cbd86f600f066494e9\"\u003e\u003ccode\u003eecb00fe\u003c/code\u003e\u003c/a\u003e update uv lockfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/4e96a4369dcf89a895af95898ea92cc4bcacfe78\"\u003e\u003ccode\u003e4e96a43\u003c/code\u003e\u003c/a\u003e version changes for v6.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a0de8c9bdfcf7a2c2462087a585b7e762ca21c51\"\u003e\u003ccode\u003ea0de8c9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5361\"\u003e#5361\u003c/a\u003e from plotly/matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/832b46c77da10c203348a953f04e4c047ec083ef\"\u003e\u003ccode\u003e832b46c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/b258862b0f41ac12e087a65b4370c1675b956dc6\"\u003e\u003ccode\u003eb258862\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5180\"\u003e#5180\u003c/a\u003e from gmjw/secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/2c5e2b61873a8cf92ed8473b98801ab099878dda\"\u003e\u003ccode\u003e2c5e2b6\u003c/code\u003e\u003c/a\u003e fix matplotlib import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/610b7ee6bebf47d6f902f0393f2ca75557a7683e\"\u003e\u003ccode\u003e610b7ee\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/fbbc9d68f9987afaeb7abce9f550b6f0ed660513\"\u003e\u003ccode\u003efbbc9d6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5322\"\u003e#5322\u003c/a\u003e from mgorny/plt-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/d2af541c362c16a4ca6525322149940e88b03ccd\"\u003e\u003ccode\u003ed2af541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5258\"\u003e#5258\u003c/a\u003e from plotly/fix-default-renderer-when-ipython-installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/ead0c767797879fb978743377b67541be98ea8f1\"\u003e\u003ccode\u003eead0c76\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into plt-import\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\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/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"ht...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/435","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/435","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/435/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-10-06T14:04:10.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2890403540","node_id":"PR_kwDOOaPssc6sSA7U","number":56,"state":"open","title":"Bump the python-packages group across 1 directory with 79 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T14:04:10.000Z","updated_at":"2025-10-06T14:04:11.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":79,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.10.0","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.1","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.118.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"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":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"networkx","old_version":"3.4.2","new_version":"3.5","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.0.2","new_version":"2.3.3","repository_url":"https://github.com/numpy/numpy"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"onnxruntime","old_version":"1.21.0","new_version":"1.23.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.77.0","new_version":"2.1.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.10","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.40.1","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.2","repository_url":"https://github.com/scipy/scipy"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.57.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 79 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.10.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.1` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.118.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.41.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.3` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\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| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.4.2` | `3.5` |\n| [numpy](https://github.com/numpy/numpy) | `2.0.2` | `2.3.3` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.21.0` | `1.23.0` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.1.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.10` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.40.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.57.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\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/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.10.0\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.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\u003ch2\u003e3.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/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\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\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/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.2\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.10.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.10.05\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.1\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.1\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.1\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-10-05T02:52\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.1.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.1\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH] Tenant override for bm25 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5483\"\u003echroma-core/chroma#5483\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Allow specifying sysdb nodeSelector and tolerations by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5485\"\u003echroma-core/chroma#5485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD]: strip debug symbols from JS bindings by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5486\"\u003echroma-core/chroma#5486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Sort SparseEmbeddings in EFs in ascending order by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5488\"\u003echroma-core/chroma#5488\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Fastembed embedding function with more parameters, add bm25 embedding function by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5489\"\u003echroma-core/chroma#5489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Search should not error on empty collection by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5494\"\u003echroma-core/chroma#5494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Distance calculations sporadically fail on sse. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5500\"\u003echroma-core/chroma#5500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Hard delete for manually GC'ed collections by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5490\"\u003echroma-core/chroma#5490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert serde_bytes deserialize by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5501\"\u003echroma-core/chroma#5501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Log the number of bytes in the parse_json span. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5505\"\u003echroma-core/chroma#5505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  The total_records_post_compaction column could be inaccurate. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5497\"\u003echroma-core/chroma#5497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] make add_tracing_middleware fn public by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5510\"\u003echroma-core/chroma#5510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Update default sparse vector dimension quota by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5502\"\u003echroma-core/chroma#5502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement row iterator for search result by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5498\"\u003echroma-core/chroma#5498\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implements RRF helper expression by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5499\"\u003echroma-core/chroma#5499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Allow dict as search args by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5503\"\u003echroma-core/chroma#5503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD]: fix Tiltfile dependencies by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5514\"\u003echroma-core/chroma#5514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve our usage of the AWS S3 SDK. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5506\"\u003echroma-core/chroma#5506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] move middleware helper behind a feature in chroma-tracing by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5515\"\u003echroma-core/chroma#5515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix equality override for search key by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5518\"\u003echroma-core/chroma#5518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Do not log errors stemming from NotFound files. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5516\"\u003echroma-core/chroma#5516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add sitemap to docs.trychroma.com by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5519\"\u003echroma-core/chroma#5519\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: update \u003ccode\u003ecollection_metadata.updated_at\u003c/code\u003e timestamp when row is updated by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5525\"\u003echroma-core/chroma#5525\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove unused, under-tested object store backend for storage. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5530\"\u003echroma-core/chroma#5530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Schema types by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5509\"\u003echroma-core/chroma#5509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add a concurrency group to our PR checks workflow by \u003ca href=\"https://github.com/eculver\"\u003e\u003ccode\u003e@​eculver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5054\"\u003echroma-core/chroma#5054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Do not trace errors stemming from NotFound sparse indexes by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5531\"\u003echroma-core/chroma#5531\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Support a read-only mode for the rust log service. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5534\"\u003echroma-core/chroma#5534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot; by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5535\"\u003echroma-core/chroma#5535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Make it so the rust log service can start without a dirty log. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5537\"\u003echroma-core/chroma#5537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add headless login to the CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5538\"\u003echroma-core/chroma#5538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Revert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot;\u0026quot; by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5542\"\u003echroma-core/chroma#5542\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.1, CLI 1.1.11, JS 3.0.17 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5541\"\u003echroma-core/chroma#5541\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.1.0...1.1.1\"\u003ehttps://github.com/chroma-core/chroma/compare/1.1.0...1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\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/chroma-core/chroma/commit/34dc0eb9b5b9943ca554aae2b3ecef6c1350f5f9\"\u003e\u003ccode\u003e34dc0eb\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.1, CLI 1.1.11, JS 3.0.17 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5541\"\u003e#5541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecfe811ceae2e880c2750bfb5f6d2731f91ce543\"\u003e\u003ccode\u003eecfe811\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Revert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot;\u0026quot; (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5542\"\u003e#5542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f42f89abc64657c22f664b4f3a7680db01dd9f82\"\u003e\u003ccode\u003ef42f89a\u003c/code\u003e\u003c/a\u003e [ENH] Add headless login to the CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5538\"\u003e#5538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d0cb6dff1eadeaf5caca608fc6be7247bac57203\"\u003e\u003ccode\u003ed0cb6df\u003c/code\u003e\u003c/a\u003e [ENH]  Make it so the rust log service can start without a dirty log. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5537\"\u003e#5537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/53dc52b6ee70236b3394d40ac264d6185dc7fe0e\"\u003e\u003ccode\u003e53dc52b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;[CHORE]  CI failed with INTERNALERROR\u0026quot; (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5535\"\u003e#5535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/5e6d6d0f8a93cdfcd2a20c6df9dcee41fabc3ef9\"\u003e\u003ccode\u003e5e6d6d0\u003c/code\u003e\u003c/a\u003e [ENH]  Support a read-only mode for the rust log service. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5534\"\u003e#5534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/83544922b89fe9d5b9489f647c53f19f1d1ee95f\"\u003e\u003ccode\u003e8354492\u003c/code\u003e\u003c/a\u003e [CHORE] Do not trace errors stemming from NotFound sparse indexes (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5531\"\u003e#5531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4bfd53cf47450dde3cb26f2e07acd3942502673e\"\u003e\u003ccode\u003e4bfd53c\u003c/code\u003e\u003c/a\u003e [BLD] Add a concurrency group to our PR checks workflow (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5054\"\u003e#5054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f2fadf0aae8d52d44b83161968531a1140ba9008\"\u003e\u003ccode\u003ef2fadf0\u003c/code\u003e\u003c/a\u003e [ENH]: Schema types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5509\"\u003e#5509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/0460b9ba2258eab9cc99618210e0cab3c3122f71\"\u003e\u003ccode\u003e0460b9b\u003c/code\u003e\u003c/a\u003e [CLN]  Remove unused, under-tested object store backend for storage. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5530\"\u003e#5530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.1\"\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.0\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.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\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\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.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\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/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.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 CliRunner. :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.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMix...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-10-03T13:26:10.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2884967614","node_id":"PR_kwDOOaPssc6r9Ry-","number":55,"state":"open","title":"Bump the python-packages group across 1 directory with 72 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-03T13:26:10.000Z","updated_at":"2025-10-03T13:26:11.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":72,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.118.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.41.1","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.3","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"lxml-html-clean","old_version":"0.4.2","new_version":"0.4.3","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"2.1.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.9","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.40.1","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.2","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 72 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.118.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.41.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.3` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `34.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.4.2` | `0.4.3` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `2.1.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.9` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.40.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.2` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\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/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.9.2\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.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\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/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.2\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.0.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: fix high cardinality compaction metrics by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5461\"\u003echroma-core/chroma#5461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  A control interface for GC. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5218\"\u003echroma-core/chroma#5218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] remove tilt_config.yaml by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5440\"\u003echroma-core/chroma#5440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Bump min stack size because it encounters stack overflow otherwise (rare) by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5463\"\u003echroma-core/chroma#5463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.0.15 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5464\"\u003echroma-core/chroma#5464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Remove \u003ccode\u003erc/**-**-**\u003c/code\u003e branch trigger-deploy workflow by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5465\"\u003echroma-core/chroma#5465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] [REVERT]: mark search API not implemented by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5466\"\u003echroma-core/chroma#5466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make rank expr operational in search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5429\"\u003echroma-core/chroma#5429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement idf modifier for BM25 index by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5442\"\u003echroma-core/chroma#5442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[TST] Extend property test for seach endpoint by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5443\"\u003echroma-core/chroma#5443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Box all large futures. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5467\"\u003echroma-core/chroma#5467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] add warp documentation for mcp server by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5468\"\u003echroma-core/chroma#5468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve metrics for S3. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5459\"\u003echroma-core/chroma#5459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Search API cleanup by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5451\"\u003echroma-core/chroma#5451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update to use new deploy workflow inputs by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5471\"\u003echroma-core/chroma#5471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add new methods to ClientManager by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Validate metadata and sparse vector by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5469\"\u003echroma-core/chroma#5469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Quota search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5470\"\u003echroma-core/chroma#5470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Support id filter in where clause by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5472\"\u003echroma-core/chroma#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add overview to intro and tweak one sentence by \u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  ScoutLogs issues a HEAD if possible. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5376\"\u003echroma-core/chroma#5376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] increase cloud quotas in docs + defaults by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5477\"\u003echroma-core/chroma#5477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChroma \u0026lt;\u0026gt; mem0 by \u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5480\"\u003echroma-core/chroma#5480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Remove from k8s anything relating to go logservice. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5441\"\u003echroma-core/chroma#5441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add query config on collection configuration, splade, and bm25 efs by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4901\"\u003echroma-core/chroma#4901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Remove unneeded assigned_node method by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5479\"\u003echroma-core/chroma#5479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Perform read-repair on collections that get written to but have a crash before manifest write. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5476\"\u003echroma-core/chroma#5476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove forked code path for pull logs. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5460\"\u003echroma-core/chroma#5460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] - Adds typescript basics video by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5481\"\u003echroma-core/chroma#5481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Log a metric to track when the log needs to purge dirty. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5482\"\u003echroma-core/chroma#5482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove the go log service code and Docker. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5448\"\u003echroma-core/chroma#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5484\"\u003echroma-core/chroma#5484\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/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.21...1.1.0\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.21...1.1.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/chroma-core/chroma/commit/0bd2f46997ab6b9cd166c5ec3b9ea91fcb9c7b2b\"\u003e\u003ccode\u003e0bd2f46\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4299e646a0cacf5749a12645cf79b015d42c4acf\"\u003e\u003ccode\u003e4299e64\u003c/code\u003e\u003c/a\u003e [CLN]  Remove the go log service code and Docker. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5448\"\u003e#5448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/85c139d33bc5004771f86f33412bada014fb07ef\"\u003e\u003ccode\u003e85c139d\u003c/code\u003e\u003c/a\u003e [CHORE]  Log a metric to track when the log needs to purge dirty. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/07466d2ec8419f3c08d698a724f72e81a4f9be54\"\u003e\u003ccode\u003e07466d2\u003c/code\u003e\u003c/a\u003e [DOC] - Adds typescript basics video (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/664a3b20542054a4df5585751eb4c93d42d32d70\"\u003e\u003ccode\u003e664a3b2\u003c/code\u003e\u003c/a\u003e [CLN]  Remove forked code path for pull logs. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f12f3d460055402966ffe4df3e0d355dfbd32b9\"\u003e\u003ccode\u003e2f12f3d\u003c/code\u003e\u003c/a\u003e [BUG]  Perform read-repair on collections that get written to but have a cras...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/204379bb602a3468bdcc380609ca66d3cbafc89e\"\u003e\u003ccode\u003e204379b\u003c/code\u003e\u003c/a\u003e [CHORE] Remove unneeded assigned_node method (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5479\"\u003e#5479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/702afa5b3f3521b88339bcb0ca7e4044582ccf09\"\u003e\u003ccode\u003e702afa5\u003c/code\u003e\u003c/a\u003e [ENH] add query config on collection configuration, splade, and bm25 efs (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/4901\"\u003e#4901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecf954c1a7ab47c1b377c1639ea0be5b220e50d9\"\u003e\u003ccode\u003eecf954c\u003c/code\u003e\u003c/a\u003e [CHORE]  Remove from k8s anything relating to go logservice. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/56d3b3960c2a353f7e80ee0e0ae320cef6acb63c\"\u003e\u003ccode\u003e56d3b39\u003c/code\u003e\u003c/a\u003e [ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5480\"\u003e#5480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.118.0\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.118.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for \u003ccode\u003eStreamingResponse\u003c/code\u003es with dependencies with \u003ccode\u003eyield\u003c/code\u003e or \u003ccode\u003eUploadFile\u003c/code\u003es, close after the response is done. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14099\"\u003e#14099\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\u003cp\u003eBefore FastAPI 0.118.0, if you used a dependency with \u003ccode\u003eyield\u003c/code\u003e, it would run the exit code after the \u003cem\u003epath operation function\u003c/em\u003e returned but right before sending the response.\u003c/p\u003e\n\u003cp\u003eThis change also meant that if you returned a \u003ccode\u003eStreamingResponse\u003c/code\u003e, the exit code of the dependency with \u003ccode\u003eyield\u003c/code\u003e would have been already run.\u003c/p\u003e\n\u003cp\u003eFor example, if you had a database session in a dependency with \u003ccode\u003eyield\u003c/code\u003e, the \u003ccode\u003eStreamingResponse\u003c/code\u003e would not be able to use that session while streaming data because the session would have already been closed in the exit code after \u003ccode\u003eyield\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis behavior was reverted in 0.118.0, to make the exit code after \u003ccode\u003eyield\u003c/code\u003e be executed after the response is sent.\u003c/p\u003e\n\u003cp\u003eYou can read more about it in the docs for \u003ca href=\"https://fastapi.tiangolo.com/advanced/advanced-dependencies#dependencies-with-yield-httpexception-except-and-background-tasks\"\u003eAdvanced Dependencies - Dependencies with \u003ccode\u003eyield\u003c/code\u003e, \u003ccode\u003eHTTPException\u003c/code\u003e, \u003ccode\u003eexcept\u003c/code\u003e and Background Tasks\u003c/a\u003e. Including what you could do if you wanted to close a database session earlier, before returning the response to the client.\u003c/p\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update \u003ccode\u003etutorial/security/oauth2-jwt/\u003c/code\u003e to use \u003ccode\u003epwdlib\u003c/code\u003e with Argon2 instead of \u003ccode\u003epasslib\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13917\"\u003e#13917\u003c/a\u003e by \u003ca href=\"https://github.com/Neizvestnyj\"\u003e\u003ccode\u003e@​Neizvestnyj\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix typos in OAuth2 password request forms. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14112\"\u003e#14112\u003c/a\u003e by \u003ca href=\"https://github.com/alv2017\"\u003e\u003ccode\u003e@​alv2017\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update contributing guidelines for installing requirements. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14095\"\u003e#14095\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🌐 Sync German docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14098\"\u003e#14098\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14103\"\u003e#14103\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Refactor sponsor image handling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14102\"\u003e#14102\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🐛 Fix sponsor display issue by hiding element on image error. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14097\"\u003e#14097\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🐛 Hide sponsor badge when sponsor image is not displayed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14096\"\u003e#14096\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\u003ch2\u003e0.117.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error when \u003ccode\u003eFile\u003c/code\u003e is declared after \u003ccode\u003eForm\u003c/code\u003e parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11194\"\u003e#11194\u003c/a\u003e by \u003ca href=\"https://github.com/thomasleveil\"\u003e\u003ccode\u003e@​thomasleveil\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.117.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨  Allow \u003ccode\u003eNone\u003c/code\u003e as return type for bodiless responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9425\"\u003e#9425\u003c/a\u003e by \u003ca href=\"https://github.com/hofrob\"\u003e\u003ccode\u003e@​hofrob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow array values for OpenAPI schema \u003ccode\u003etype\u003c/code\u003e field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13639\"\u003e#13639\u003c/a\u003e by \u003ca href=\"https://github.com/sammasak\"\u003e\u003ccode\u003e@​sammasak\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add OpenAPI \u003ccode\u003eexternal_docs\u003c/code\u003e parameter to \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13713\"\u003e#13713\u003c/a\u003e by \u003ca href=\"https://github.com/cmtoro\"\u003e\u003ccode\u003e@​cmtoro\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⚡️ Fix \u003ccode\u003edefault_factory\u003c/code\u003e for response model field with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9704\"\u003e#9704\u003c/a\u003e by \u003ca href=\"https://github.com/vvanglro\"\u003e\u003ccode\u003e@​vvanglro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix inconsistent processing of model docstring formfeed char with Pydantic V1. PR \u003ca href=\"https://redirect....\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/55","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/55","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/55/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-09-29T17:04:57.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2871391616","node_id":"PR_kwDOOaPssc6rJfWA","number":54,"state":"closed","title":"Bump the python-packages group across 1 directory with 71 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-03T13:21:44.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-29T17:04:57.000Z","updated_at":"2025-10-03T13:21:44.000Z","time_to_close":332207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":71,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.118.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.2","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.9","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.2","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 71 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.118.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.9` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.2` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\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/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.9.2\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.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.2\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.0.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: fix high cardinality compaction metrics by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5461\"\u003echroma-core/chroma#5461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  A control interface for GC. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5218\"\u003echroma-core/chroma#5218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] remove tilt_config.yaml by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5440\"\u003echroma-core/chroma#5440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Bump min stack size because it encounters stack overflow otherwise (rare) by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5463\"\u003echroma-core/chroma#5463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.0.15 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5464\"\u003echroma-core/chroma#5464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Remove \u003ccode\u003erc/**-**-**\u003c/code\u003e branch trigger-deploy workflow by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5465\"\u003echroma-core/chroma#5465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] [REVERT]: mark search API not implemented by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5466\"\u003echroma-core/chroma#5466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make rank expr operational in search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5429\"\u003echroma-core/chroma#5429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement idf modifier for BM25 index by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5442\"\u003echroma-core/chroma#5442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[TST] Extend property test for seach endpoint by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5443\"\u003echroma-core/chroma#5443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Box all large futures. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5467\"\u003echroma-core/chroma#5467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] add warp documentation for mcp server by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5468\"\u003echroma-core/chroma#5468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve metrics for S3. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5459\"\u003echroma-core/chroma#5459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Search API cleanup by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5451\"\u003echroma-core/chroma#5451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update to use new deploy workflow inputs by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5471\"\u003echroma-core/chroma#5471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add new methods to ClientManager by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Validate metadata and sparse vector by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5469\"\u003echroma-core/chroma#5469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Quota search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5470\"\u003echroma-core/chroma#5470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Support id filter in where clause by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5472\"\u003echroma-core/chroma#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add overview to intro and tweak one sentence by \u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  ScoutLogs issues a HEAD if possible. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5376\"\u003echroma-core/chroma#5376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] increase cloud quotas in docs + defaults by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5477\"\u003echroma-core/chroma#5477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChroma \u0026lt;\u0026gt; mem0 by \u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5480\"\u003echroma-core/chroma#5480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Remove from k8s anything relating to go logservice. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5441\"\u003echroma-core/chroma#5441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add query config on collection configuration, splade, and bm25 efs by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4901\"\u003echroma-core/chroma#4901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Remove unneeded assigned_node method by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5479\"\u003echroma-core/chroma#5479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Perform read-repair on collections that get written to but have a crash before manifest write. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5476\"\u003echroma-core/chroma#5476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove forked code path for pull logs. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5460\"\u003echroma-core/chroma#5460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] - Adds typescript basics video by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5481\"\u003echroma-core/chroma#5481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Log a metric to track when the log needs to purge dirty. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5482\"\u003echroma-core/chroma#5482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove the go log service code and Docker. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5448\"\u003echroma-core/chroma#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5484\"\u003echroma-core/chroma#5484\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/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.21...1.1.0\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.21...1.1.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/chroma-core/chroma/commit/0bd2f46997ab6b9cd166c5ec3b9ea91fcb9c7b2b\"\u003e\u003ccode\u003e0bd2f46\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4299e646a0cacf5749a12645cf79b015d42c4acf\"\u003e\u003ccode\u003e4299e64\u003c/code\u003e\u003c/a\u003e [CLN]  Remove the go log service code and Docker. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5448\"\u003e#5448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/85c139d33bc5004771f86f33412bada014fb07ef\"\u003e\u003ccode\u003e85c139d\u003c/code\u003e\u003c/a\u003e [CHORE]  Log a metric to track when the log needs to purge dirty. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/07466d2ec8419f3c08d698a724f72e81a4f9be54\"\u003e\u003ccode\u003e07466d2\u003c/code\u003e\u003c/a\u003e [DOC] - Adds typescript basics video (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/664a3b20542054a4df5585751eb4c93d42d32d70\"\u003e\u003ccode\u003e664a3b2\u003c/code\u003e\u003c/a\u003e [CLN]  Remove forked code path for pull logs. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f12f3d460055402966ffe4df3e0d355dfbd32b9\"\u003e\u003ccode\u003e2f12f3d\u003c/code\u003e\u003c/a\u003e [BUG]  Perform read-repair on collections that get written to but have a cras...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/204379bb602a3468bdcc380609ca66d3cbafc89e\"\u003e\u003ccode\u003e204379b\u003c/code\u003e\u003c/a\u003e [CHORE] Remove unneeded assigned_node method (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5479\"\u003e#5479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/702afa5b3f3521b88339bcb0ca7e4044582ccf09\"\u003e\u003ccode\u003e702afa5\u003c/code\u003e\u003c/a\u003e [ENH] add query config on collection configuration, splade, and bm25 efs (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/4901\"\u003e#4901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecf954c1a7ab47c1b377c1639ea0be5b220e50d9\"\u003e\u003ccode\u003eecf954c\u003c/code\u003e\u003c/a\u003e [CHORE]  Remove from k8s anything relating to go logservice. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/56d3b3960c2a353f7e80ee0e0ae320cef6acb63c\"\u003e\u003ccode\u003e56d3b39\u003c/code\u003e\u003c/a\u003e [ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5480\"\u003e#5480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.118.0\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.118.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for \u003ccode\u003eStreamingResponse\u003c/code\u003es with dependencies with \u003ccode\u003eyield\u003c/code\u003e or \u003ccode\u003eUploadFile\u003c/code\u003es, close after the response is done. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14099\"\u003e#14099\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\u003cp\u003eBefore FastAPI 0.118.0, if you used a dependency with \u003ccode\u003eyield\u003c/code\u003e, it would run the exit code after the \u003cem\u003epath operation function\u003c/em\u003e returned but right before sending the response.\u003c/p\u003e\n\u003cp\u003eThis change also meant that if you returned a \u003ccode\u003eStreamingResponse\u003c/code\u003e, the exit code of the dependency with \u003ccode\u003eyield\u003c/code\u003e would have been already run.\u003c/p\u003e\n\u003cp\u003eFor example, if you had a database session in a dependency with \u003ccode\u003eyield\u003c/code\u003e, the \u003ccode\u003eStreamingResponse\u003c/code\u003e would not be able to use that session while streaming data because the session would have already been closed in the exit code after \u003ccode\u003eyield\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis behavior was reverted in 0.118.0, to make the exit code after \u003ccode\u003eyield\u003c/code\u003e be executed after the response is sent.\u003c/p\u003e\n\u003cp\u003eYou can read more about it in the docs for \u003ca href=\"https://fastapi.tiangolo.com/advanced/advanced-dependencies#dependencies-with-yield-httpexception-except-and-background-tasks\"\u003eAdvanced Dependencies - Dependencies with \u003ccode\u003eyield\u003c/code\u003e, \u003ccode\u003eHTTPException\u003c/code\u003e, \u003ccode\u003eexcept\u003c/code\u003e and Background Tasks\u003c/a\u003e. Including what you could do if you wanted to close a database session earlier, before returning the response to the client.\u003c/p\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update \u003ccode\u003etutorial/security/oauth2-jwt/\u003c/code\u003e to use \u003ccode\u003epwdlib\u003c/code\u003e with Argon2 instead of \u003ccode\u003epasslib\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13917\"\u003e#13917\u003c/a\u003e by \u003ca href=\"https://github.com/Neizvestnyj\"\u003e\u003ccode\u003e@​Neizvestnyj\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix typos in OAuth2 password request forms. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14112\"\u003e#14112\u003c/a\u003e by \u003ca href=\"https://github.com/alv2017\"\u003e\u003ccode\u003e@​alv2017\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update contributing guidelines for installing requirements. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14095\"\u003e#14095\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🌐 Sync German docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14098\"\u003e#14098\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14103\"\u003e#14103\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Refactor sponsor image handling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14102\"\u003e#14102\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🐛 Fix sponsor display issue by hiding element on image error. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14097\"\u003e#14097\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🐛 Hide sponsor badge when sponsor image is not displayed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14096\"\u003e#14096\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\u003ch2\u003e0.117.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error when \u003ccode\u003eFile\u003c/code\u003e is declared after \u003ccode\u003eForm\u003c/code\u003e parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11194\"\u003e#11194\u003c/a\u003e by \u003ca href=\"https://github.com/thomasleveil\"\u003e\u003ccode\u003e@​thomasleveil\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.117.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨  Allow \u003ccode\u003eNone\u003c/code\u003e as return type for bodiless responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9425\"\u003e#9425\u003c/a\u003e by \u003ca href=\"https://github.com/hofrob\"\u003e\u003ccode\u003e@​hofrob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow array values for OpenAPI schema \u003ccode\u003etype\u003c/code\u003e field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13639\"\u003e#13639\u003c/a\u003e by \u003ca href=\"https://github.com/sammasak\"\u003e\u003ccode\u003e@​sammasak\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add OpenAPI \u003ccode\u003eexternal_docs\u003c/code\u003e parameter to \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13713\"\u003e#13713\u003c/a\u003e by \u003ca href=\"https://github.com/cmtoro\"\u003e\u003ccode\u003e@​cmtoro\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⚡️ Fix \u003ccode\u003edefault_factory\u003c/code\u003e for response model field with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9704\"\u003e#9704\u003c/a\u003e by \u003ca href=\"https://github.com/vvanglro\"\u003e\u003ccode\u003e@​vvanglro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix inconsistent processing of model docstring formfeed char with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/6039\"\u003e#6039\u003c/a\u003e by \u003ca href=\"https://github.com/MaxwellPayne\"\u003e\u003ccode\u003e@​MaxwellPayne\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003ejsonable_encoder\u003c/code\u003e alters \u003ccode\u003ejson_encoders\u003c/code\u003e of Pydantic v1 objects. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/4972\"\u003e#4972\u003c/a\u003e by \u003ca href=\"https://github.com/aboubacs\"\u003e\u003ccode\u003e@​aboubacs\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/...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-09-26T13:30:23.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"3457691767","node_id":"PR_kwDOOaPssc6quNxr","number":53,"state":"open","title":"Bump the python-packages group across 1 directory with 70 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-26T13:30:23.000Z","updated_at":"2025-09-29T13:59:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":70,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.2","repository_url":"https://github.com/django/asgiref"},{"name":"bcrypt","old_version":"4.3.0","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.117.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.9.23","repository_url":"https://github.com/google/flatbuffers"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.75.1","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.35.1","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.37.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.58b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.6","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.9","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.18","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.1","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.2","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.19.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the python-packages group with 70 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.3.0` | `5.0.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.1.0` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.117.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.9.23` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.75.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.35.1` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.11.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.37.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.58b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.58b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.9` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.18` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.48.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.2` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.19.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.37.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\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\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\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\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\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\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\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\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\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/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.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.8.1 to 3.9.2\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.9.2 (2025-09-23)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes wsgi.errors file descriptor in WsgiToAsgi adapter.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/3471a0c09bd043d61c299308c0c8519ab6c0f774\"\u003e\u003ccode\u003e3471a0c\u003c/code\u003e\u003c/a\u003e Releasing 3.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/4f892bd261cee9afe51d67333e9bc7cd98b39a35\"\u003e\u003ccode\u003e4f892bd\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 from tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/83cd6f3c6f59a66999446c2893cdb3fcae3c03c5\"\u003e\u003ccode\u003e83cd6f3\u003c/code\u003e\u003c/a\u003e Run CI against Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/796b9f14fd92d3131c7c39fab308ddd986d271eb\"\u003e\u003ccode\u003e796b9f1\u003c/code\u003e\u003c/a\u003e Fix incorrect Trailer header (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/29b108b0a9a5eddae3e282ba33915412a855e529\"\u003e\u003ccode\u003e29b108b\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/529\"\u003e#529\u003c/a\u003e: wsgi.errors should be a StringIO (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.3.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.3.0...5.0.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.1.0\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.1.0\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.1.0\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-09-16T21:23\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.1.0.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.1.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: fix high cardinality compaction metrics by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5461\"\u003echroma-core/chroma#5461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  A control interface for GC. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5218\"\u003echroma-core/chroma#5218\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] remove tilt_config.yaml by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5440\"\u003echroma-core/chroma#5440\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Bump min stack size because it encounters stack overflow otherwise (rare) by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5463\"\u003echroma-core/chroma#5463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] JS 3.0.15 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5464\"\u003echroma-core/chroma#5464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Remove \u003ccode\u003erc/**-**-**\u003c/code\u003e branch trigger-deploy workflow by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5465\"\u003echroma-core/chroma#5465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] [REVERT]: mark search API not implemented by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5466\"\u003echroma-core/chroma#5466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Make rank expr operational in search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5429\"\u003echroma-core/chroma#5429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Implement idf modifier for BM25 index by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5442\"\u003echroma-core/chroma#5442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[TST] Extend property test for seach endpoint by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5443\"\u003echroma-core/chroma#5443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Box all large futures. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5467\"\u003echroma-core/chroma#5467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] add warp documentation for mcp server by \u003ca href=\"https://github.com/c-gamble\"\u003e\u003ccode\u003e@​c-gamble\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5468\"\u003echroma-core/chroma#5468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Improve metrics for S3. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5459\"\u003echroma-core/chroma#5459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Search API cleanup by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5451\"\u003echroma-core/chroma#5451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update to use new deploy workflow inputs by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5471\"\u003echroma-core/chroma#5471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add new methods to ClientManager by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Validate metadata and sparse vector by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5469\"\u003echroma-core/chroma#5469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Quota search api by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5470\"\u003echroma-core/chroma#5470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Support id filter in where clause by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5472\"\u003echroma-core/chroma#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add overview to intro and tweak one sentence by \u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  ScoutLogs issues a HEAD if possible. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5376\"\u003echroma-core/chroma#5376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] increase cloud quotas in docs + defaults by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5477\"\u003echroma-core/chroma#5477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChroma \u0026lt;\u0026gt; mem0 by \u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5480\"\u003echroma-core/chroma#5480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Remove from k8s anything relating to go logservice. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5441\"\u003echroma-core/chroma#5441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add query config on collection configuration, splade, and bm25 efs by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4901\"\u003echroma-core/chroma#4901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Remove unneeded assigned_node method by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5479\"\u003echroma-core/chroma#5479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Perform read-repair on collections that get written to but have a crash before manifest write. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5476\"\u003echroma-core/chroma#5476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove forked code path for pull logs. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5460\"\u003echroma-core/chroma#5460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] - Adds typescript basics video by \u003ca href=\"https://github.com/tjkrusinskichroma\"\u003e\u003ccode\u003e@​tjkrusinskichroma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5481\"\u003echroma-core/chroma#5481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]  Log a metric to track when the log needs to purge dirty. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5482\"\u003echroma-core/chroma#5482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLN]  Remove the go log service code and Docker. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5448\"\u003echroma-core/chroma#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5484\"\u003echroma-core/chroma#5484\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/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5444\"\u003echroma-core/chroma#5444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jean-philippe-martin\"\u003e\u003ccode\u003e@​jean-philippe-martin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/4967\"\u003echroma-core/chroma#4967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/parshvadaftari\"\u003e\u003ccode\u003e@​parshvadaftari\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5425\"\u003echroma-core/chroma#5425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.21...1.1.0\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.21...1.1.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/chroma-core/chroma/commit/0bd2f46997ab6b9cd166c5ec3b9ea91fcb9c7b2b\"\u003e\u003ccode\u003e0bd2f46\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.1.0, CLI 1.1.10, JS 3.0.16 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/4299e646a0cacf5749a12645cf79b015d42c4acf\"\u003e\u003ccode\u003e4299e64\u003c/code\u003e\u003c/a\u003e [CLN]  Remove the go log service code and Docker. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5448\"\u003e#5448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/85c139d33bc5004771f86f33412bada014fb07ef\"\u003e\u003ccode\u003e85c139d\u003c/code\u003e\u003c/a\u003e [CHORE]  Log a metric to track when the log needs to purge dirty. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/07466d2ec8419f3c08d698a724f72e81a4f9be54\"\u003e\u003ccode\u003e07466d2\u003c/code\u003e\u003c/a\u003e [DOC] - Adds typescript basics video (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/664a3b20542054a4df5585751eb4c93d42d32d70\"\u003e\u003ccode\u003e664a3b2\u003c/code\u003e\u003c/a\u003e [CLN]  Remove forked code path for pull logs. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f12f3d460055402966ffe4df3e0d355dfbd32b9\"\u003e\u003ccode\u003e2f12f3d\u003c/code\u003e\u003c/a\u003e [BUG]  Perform read-repair on collections that get written to but have a cras...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/204379bb602a3468bdcc380609ca66d3cbafc89e\"\u003e\u003ccode\u003e204379b\u003c/code\u003e\u003c/a\u003e [CHORE] Remove unneeded assigned_node method (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5479\"\u003e#5479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/702afa5b3f3521b88339bcb0ca7e4044582ccf09\"\u003e\u003ccode\u003e702afa5\u003c/code\u003e\u003c/a\u003e [ENH] add query config on collection configuration, splade, and bm25 efs (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/4901\"\u003e#4901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/ecf954c1a7ab47c1b377c1639ea0be5b220e50d9\"\u003e\u003ccode\u003eecf954c\u003c/code\u003e\u003c/a\u003e [CHORE]  Remove from k8s anything relating to go logservice. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/56d3b3960c2a353f7e80ee0e0ae320cef6acb63c\"\u003e\u003ccode\u003e56d3b39\u003c/code\u003e\u003c/a\u003e [ENH]  Add a \u003ccode\u003eready\u003c/code\u003e variant of the uncompacted records metric. (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5480\"\u003e#5480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.117.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.117.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error when \u003ccode\u003eFile\u003c/code\u003e is declared after \u003ccode\u003eForm\u003c/code\u003e parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11194\"\u003e#11194\u003c/a\u003e by \u003ca href=\"https://github.com/thomasleveil\"\u003e\u003ccode\u003e@​thomasleveil\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.117.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨  Allow \u003ccode\u003eNone\u003c/code\u003e as return type for bodiless responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9425\"\u003e#9425\u003c/a\u003e by \u003ca href=\"https://github.com/hofrob\"\u003e\u003ccode\u003e@​hofrob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Allow array values for OpenAPI schema \u003ccode\u003etype\u003c/code\u003e field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13639\"\u003e#13639\u003c/a\u003e by \u003ca href=\"https://github.com/sammasak\"\u003e\u003ccode\u003e@​sammasak\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add OpenAPI \u003ccode\u003eexternal_docs\u003c/code\u003e parameter to \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13713\"\u003e#13713\u003c/a\u003e by \u003ca href=\"https://github.com/cmtoro\"\u003e\u003ccode\u003e@​cmtoro\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⚡️ Fix \u003ccode\u003edefault_factory\u003c/code\u003e for response model field with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9704\"\u003e#9704\u003c/a\u003e by \u003ca href=\"https://github.com/vvanglro\"\u003e\u003ccode\u003e@​vvanglro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix inconsistent processing of model docstring formfeed char with Pydantic V1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/6039\"\u003e#6039\u003c/a\u003e by \u003ca href=\"https://github.com/MaxwellPayne\"\u003e\u003ccode\u003e@​MaxwellPayne\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003ejsonable_encoder\u003c/code\u003e alters \u003ccode\u003ejson_encoders\u003c/code\u003e of Pydantic v1 objects. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/4972\"\u003e#4972\u003c/a\u003e by \u003ca href=\"https://github.com/aboubacs\"\u003e\u003ccode\u003e@​aboubacs\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Reenable \u003ccode\u003eallow_arbitrary_types\u003c/code\u003e when only 1 argument is used on the API endpoint. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13694\"\u003e#13694\u003c/a\u003e by \u003ca href=\"https://github.com/rmawatson\"\u003e\u003ccode\u003e@​rmawatson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003einspect.getcoroutinefunction()\u003c/code\u003e can break testing with \u003ccode\u003eunittest.mock.patch()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14022\"\u003e#14022\u003c/a\u003e by \u003ca href=\"https://github.com/secrett2633\"\u003e\u003ccode\u003e@​secrett2633\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Create \u003ccode\u003edependency-cache\u003c/code\u003e dict in \u003ccode\u003esolve_dependencies\u003c/code\u003e only if \u003ccode\u003eNone\u003c/code\u003e (don't re-create if empty). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13689\"\u003e#13689\u003c/a\u003e by \u003ca href=\"https://github.com/bokshitsky\"\u003e\u003ccode\u003e@​bokshitsky\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Enable test case for duplicated headers in \u003ccode\u003etest_tutorial/test_header_params/test_tutorial003.py\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13864\"\u003e#13864\u003c/a\u003e by \u003ca href=\"https://github.com/Amogha-ark\"\u003e\u003ccode\u003e@​Amogha-ark\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📌 Pin \u003ccode\u003ehttpx\u003c/code\u003e to \u003ccode\u003e\u0026gt;=0.23.0,\u0026lt;1.0.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14086\"\u003e#14086\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\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add note about Cookies and JavaScript on \u003ccode\u003etutorial/cookie-params.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13510\"\u003e#13510\u003c/a\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Remove outdated formatting from \u003ccode\u003epath-params-numeric-validations.md\u003c/code\u003e for languages \u003ccode\u003een\u003c/code\u003e, \u003ccode\u003ees\u003c/code\u003e and \u003ccode\u003euk\u003c/code\u003e.. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14059\"\u003e#14059\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix and Improve English Documentation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14048\"\u003e#14048\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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📝 Update prompts and German translation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14015\"\u003e#14015\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\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✅ Simplify tests for response_model. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14062\"\u003e#14062\u003c/a\u003e by \u003ca href=\"https://github.com/dynamicy\"\u003e\u003ccode\u003e@​dynamicy\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🚨 Install pydantic.mypy plugin. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14081\"\u003e#14081\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✅ Add LLM test file. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14049\"\u003e#14049\u003c/a\u003e by \u003ca href=\"https://github.com/nilslindemann\"\u003e\u003ccode\u003e@​nilslindemann\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Update translations script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13968\"\u003e#13968\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 \u003ccode\u003edocs.py generate-readme\u003c/code\u003e command to remove permalinks from headers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14055\"\u003e#14055\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 mypy to 1.14.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12970\"\u003e#12970\u003c/a\u003e by \u003ca href=\"https://github....\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-09-22T21:06:13.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"3442773217","node_id":"PR_kwDOHUSeqs6p8Ooe","number":434,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T21:06:13.000Z","updated_at":"2025-09-22T22:23:45.823Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":17,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.23","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.2","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.23` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.0` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.2` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.23\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\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\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/pydantic/pydantic/blob/v1.10.23/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.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/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/commit/53572f6532876fde279abfa63a47c056dc485540\"\u003e\u003ccode\u003e53572f6\u003c/code\u003e\u003c/a\u003e Update uv lock file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/3b5a65f1431eb2b17957af05b41ebc031d894d68\"\u003e\u003ccode\u003e3b5a65f\u003c/code\u003e\u003c/a\u003e version changes for v6.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/6b7565b594a0640f4181f4d1a027c1235f8eff7c\"\u003e\u003ccode\u003e6b7565b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5318\"\u003e#5318\u003c/a\u003e from plotly/update-plotlyjs-3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c2225b79f337bb4ae42268d50fb2d77c1ccd684f\"\u003e\u003ccode\u003ec2225b7\u003c/code\u003e\u003c/a\u003e add DeprecationWarning for upcoming change in locationmode 'country names'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/deef7a3345e42374ef16d181beb3922d38631343\"\u003e\u003ccode\u003edeef7a3\u003c/code\u003e\u003c/a\u003e update plotly/labextension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/0589b229076c3c75ad40fa3875f276e1e5e7dfe8\"\u003e\u003ccode\u003e0589b22\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/694b0366419228b05b67ee6f34ee2d1c53734360\"\u003e\u003ccode\u003e694b036\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5308\"\u003e#5308\u003c/a\u003e from plotly/update-doc-string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/480a1aff40c631fdd34df16e50beb75debdce60b\"\u003e\u003ccode\u003e480a1af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5287\"\u003e#5287\u003c/a\u003e from jdbeel/update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c07de25a169eb36bc895755be1cfcb79fcada21f\"\u003e\u003ccode\u003ec07de25\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/9f4b774e783c9eea70fcc9631a18d107ea3fe845\"\u003e\u003ccode\u003e9f4b774\u003c/code\u003e\u003c/a\u003e Update _json.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\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/pandas-dev/pandas/commit/4665c10899bc413b639194f6fb8665a5c70f7db5\"\u003e\u003ccode\u003e4665c10\u003c/code\u003e\u003c/a\u003e RLS: 2.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/633c68b91808441eba7d73b630a82b713ba19da8\"\u003e\u003ccode\u003e633c68b\u003c/code\u003e\u003c/a\u003e DOC: fix syntax in whatsnew file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/456ad4702cb017aab36e2d09a4029b1b085198f5\"\u003e\u003ccode\u003e456ad47\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62152\"\u003e#62152\u003c/a\u003e on branch 2.3.x (DOC: prepare 2.3.2 whatsnew notes for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6cae6444444ed7943ceffbd5990cd8249dd5b47c\"\u003e\u003ccode\u003e6cae644\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: move and reword whatsnew note for replace fix (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/57865\"\u003eGH-57865\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/a91c50a58c372cddf104fd60241c7284bbf8fc80\"\u003e\u003ccode\u003ea91c50a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62147\"\u003e#62147\u003c/a\u003e on branch 2.3.x (DOC: correct and rewrite string migration...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f7a2cfdf2ed08016167ae6c5e577c54949a849b2\"\u003e\u003ccode\u003ef7a2cfd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG/DEPR: logical operation with bool and string (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/61995\"\u003e#61995\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/7981a43db4339826a3ce5020e9b1b931e604e5bd\"\u003e\u003ccode\u003e7981a43\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62124\"\u003e#62124\u003c/a\u003e on branch 2.3.x (CI/BLD: don't use strict xfail for '%m.%Y...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/fafbcbd03d1721830f4df8255abdab341db2a583\"\u003e\u003ccode\u003efafbcbd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG(CoW): also raise for chained assignment for .at / .iat (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3ac64a714886d917ca24ba637a85c4aaf563fc1b\"\u003e\u003ccode\u003e3ac64a7\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: Fix Series.str.contains with compiled regex on Arrow st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/1f2dc4fd8a2503773b6f90cb5e8cc5c3172c3c11\"\u003e\u003ccode\u003e1f2dc4f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix Series.str.fullmatch() and Series.str.match() with ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.3.0...v2.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.26.0 to 4.30.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.30.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.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/tox-dev/tox/pull/3603\"\u003etox-dev/tox#3603\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure automatically provisioned environment is torn down by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3601\"\u003etox-dev/tox#3601\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows 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/tox-dev/tox/pull/3604\"\u003etox-dev/tox#3604\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.1...4.30.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.30.1...4.30.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.30.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Tox from hanging with \u003ccode\u003e--installpkg\u003c/code\u003e sdist due to orphaned build backend by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\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/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.0...4.30.1...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/434","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/434","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/434/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-09-08T22:21:15.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2809784005","node_id":"PR_kwDOKF4tPs6neebF","number":2453,"state":"open","title":"Build: Bump mmh3 from 5.1.0 to 5.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-08T22:21:15.000Z","updated_at":"2025-09-09T14:03:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Build: Bump","packages":[{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [mmh3](https://github.com/hajimes/mmh3) from 5.1.0 to 5.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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=mmh3\u0026package-manager=pip\u0026previous-version=5.1.0\u0026new-version=5.2.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/apache/iceberg-python/pull/2453","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Ficeberg-python/issues/2453","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2453/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-09-08T13:40:51.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2808326323","node_id":"PR_kwDOOaPssc6nY6iz","number":51,"state":"open","title":"Bump the python-packages group across 1 directory with 67 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-08T13:40:51.000Z","updated_at":"2025-09-08T13:40:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":67,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.1","repository_url":"https://github.com/django/asgiref"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.0.20","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.116.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.74.0","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.34.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.1","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.106.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.4","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.7","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.9.1","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.47.3","repository_url":"https://github.com/encode/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.22.0","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.56.1","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.17.4","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.35.0","repository_url":"https://github.com/encode/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 67 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.0.20` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.116.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.9.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.74.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.34.4` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.10.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.106.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.57b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.4` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.7` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.9.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/encode/starlette) | `0.46.2` | `0.47.3` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.22.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.56.1` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.17.4` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/encode/uvicorn) | `0.34.2` | `0.35.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.10.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\nof asyncio's\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e\nAPI on Python 3.14 or later\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can\nsuppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise.\n(\u003ccode\u003e[#913](https://github.com/agronholm/anyio/issues/913) \u0026lt;https://github.com/agronholm/anyio/pull/913\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover\nonly occurs when the buffer size exceeds \u003ccode\u003emax_size\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/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.9.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.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b126e0c01144bd980937b658dd6eaf236150fe63\"\u003e\u003ccode\u003eb126e0c\u003c/code\u003e\u003c/a\u003e Removed unneeded typing workaround (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef1678a65b891ef838525d1f3a658875acb9018a\"\u003e\u003ccode\u003eef1678a\u003c/code\u003e\u003c/a\u003e Migrate work for finished \u003ccode\u003eCurrentThreadExecutor\u003c/code\u003e to previous executor (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/37870f58963c38617a910743ba69311ec8e4e0d0\"\u003e\u003ccode\u003e37870f5\u003c/code\u003e\u003c/a\u003e Fixed reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ec6f666621407674e80d039bf235ba2662193bdb\"\u003e\u003ccode\u003eec6f666\u003c/code\u003e\u003c/a\u003e Add MicroPie framework to \u003ccode\u003eimplementations.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/5eff04dce46b74172a1d6d1c5b02409f0afe33b6\"\u003e\u003ccode\u003e5eff04d\u003c/code\u003e\u003c/a\u003e Lazily bind ApplicationCommunicator to event loop (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.0.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.20\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.20\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.20\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T17:04\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.20.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[RELEASE] 1.0.20 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5303\"\u003echroma-core/chroma#5303\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.0.18\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.18\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.18\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T08:09\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.18.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHORE]: Added short descriptions to CLI commands by \u003ca href=\"https://github.com/tazarov\"\u003e\u003ccode\u003e@​tazarov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5217\"\u003echroma-core/chroma#5217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use AVX in distance calculations by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5258\"\u003echroma-core/chroma#5258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Auto-set tenant, scoped database in python CloudClient by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5026\"\u003echroma-core/chroma#5026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[PERF]: Modify get_range to return an iterator by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5256\"\u003echroma-core/chroma#5256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Mark dirty on rollback of cursor to guarantee compaction picks it up. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5265\"\u003echroma-core/chroma#5265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add metric for component queue depth \u0026amp; change dispatcher queue depth metric buckets by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5261\"\u003echroma-core/chroma#5261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add garbage collection CLI for manual garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5250\"\u003echroma-core/chroma#5250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Clean up DEVELOP.md by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5270\"\u003echroma-core/chroma#5270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Further optimize query on getCollections when databases pkey is fully specified by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5268\"\u003echroma-core/chroma#5268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Rust to allow build with AVX when flag is set by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5269\"\u003echroma-core/chroma#5269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Fix test_add flake by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5272\"\u003echroma-core/chroma#5272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert \u0026quot;[ENH]: Further optimize query on getCollections when databases pkey is fully specified (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5268\"\u003e#5268\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5273\"\u003echroma-core/chroma#5273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add maturin to dev dependencies by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5271\"\u003echroma-core/chroma#5271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Optimize GetCollections and remove usage of raw gorm by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5274\"\u003echroma-core/chroma#5274\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add config param to garbage collector to control how many collections are fetched from SysDb by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5275\"\u003echroma-core/chroma#5275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Reject version files without paths. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5267\"\u003echroma-core/chroma#5267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Enable getting a collection by CRN by \u003ca href=\"https://github.com/drewkim\"\u003e\u003ccode\u003e@​drewkim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5244\"\u003echroma-core/chroma#5244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] CompactionError did not proxy should_trace_error by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5282\"\u003echroma-core/chroma#5282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Resolve deadlock in system crate? by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5283\"\u003echroma-core/chroma#5283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Complete the NAC metrics for the write half. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5278\"\u003echroma-core/chroma#5278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: fix missing node in constructed version graph for garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5284\"\u003echroma-core/chroma#5284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix test flake from 5283. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5287\"\u003echroma-core/chroma#5287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Don't GC hnsw if it is empty by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5295\"\u003echroma-core/chroma#5295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Sync before flushing by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5296\"\u003echroma-core/chroma#5296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota limits by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5297\"\u003echroma-core/chroma#5297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix CLI copy offset by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5288\"\u003echroma-core/chroma#5288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add support for default space in create coll config by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5293\"\u003echroma-core/chroma#5293\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/chroma-core/chroma/commit/b6b059dfd71525f9abad931ec30063bae177696f\"\u003e\u003ccode\u003eb6b059d\u003c/code\u003e\u003c/a\u003e [RELEASE] 1.0.20 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5303\"\u003e#5303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/1993cd4a515b40faac8e2c7c7d65526445959f0b\"\u003e\u003ccode\u003e1993cd4\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.8, Python 1.0.19, JS 3.0.14 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5302\"\u003e#5302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/19600af2796fffbe1781ef486ee324851877f88f\"\u003e\u003ccode\u003e19600af\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy arg number types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5301\"\u003e#5301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d3602cd776b2e3716ba3c9685a6571c1933489bc\"\u003e\u003ccode\u003ed3602cd\u003c/code\u003e\u003c/a\u003e [CHORE] Update JS binding deps in the client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5300\"\u003e#5300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2570b471edc5a47fc271eddfa37d8e4236ac0f21\"\u003e\u003ccode\u003e2570b47\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.7, Python 1.0.18, JS 3.0.13 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5299\"\u003e#5299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/51a7d1625b3b41083891f1c600e15131a321ae5e\"\u003e\u003ccode\u003e51a7d16\u003c/code\u003e\u003c/a\u003e [ENH] Add support for default space in create coll config (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5293\"\u003e#5293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/163133aacc9dab8a9e7d871db031d6e159ea1322\"\u003e\u003ccode\u003e163133a\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy offset (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5288\"\u003e#5288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f06586503be2603d49bd47c1315001460dac947\"\u003e\u003ccode\u003e2f06586\u003c/code\u003e\u003c/a\u003e [DOC] update quota limits (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5297\"\u003e#5297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/983728076d253409791709d5dbbed0657e30b6d9\"\u003e\u003ccode\u003e9837280\u003c/code\u003e\u003c/a\u003e [ENH] Sync before flushing (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5296\"\u003e#5296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/649e14c530fe46b0e5dec84ce2f5b25a28b79a2e\"\u003e\u003ccode\u003e649e14c\u003c/code\u003e\u003c/a\u003e [BUG]: Don't GC hnsw if it is empty (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5295\"\u003e#5295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.0.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.116.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.116.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13884\"\u003e#13884\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📝 Add notification about impending changes in Translations to \u003ccode\u003edocs/en/docs/contributing.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13886\"\u003e#13886\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13871\"\u003e#13871\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.116.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for deploying to FastAPI Cloud with \u003ccode\u003efastapi deploy\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13870\"\u003e#13870\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\u003cp\u003eInstalling \u003ccode\u003efastapi[standard]\u003c/code\u003e now includes \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis will allow you to deploy to \u003ca href=\"https://fastapicloud.com\"\u003eFastAPI Cloud\u003c/a\u003e with the \u003ccode\u003efastapi deploy\u003c/code\u003e command.\u003c/p\u003e\n\u003cp\u003eIf you want to install \u003ccode\u003efastapi\u003c/code\u003e with the standard dependencies but without \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e, you can install instead \u003ccode\u003efastapi[standard-no-fastapi-cloud-cli]\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13801\"\u003e#13801\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/additional-status-codes.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13799\"\u003e#13799\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Ukrainian translation for \u003ccode\u003edocs/uk/docs/tutorial/body-updates.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13804\"\u003e#13804\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\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 pillow from 11.1.0 to 11.3.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13852\"\u003e#13852\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 FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13846\"\u003e#13846\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13848\"\u003e#13848\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 mkdocs-material from 9.6.1 to 9.6.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13849\"\u003e#13849\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13843\"\u003e#13843\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13845\"\u003e#13845\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.115.14\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for unions when using \u003ccode\u003eForm\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13827\"\u003e#13827\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\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✏️ Fix grammar mistake in \u003ccode\u003edocs/en/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13800\"\u003e#13800\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Speakeasy URL to Speakeasy Sandbox. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13697\"\u003e#13697\u003c/a\u003e by \u003ca href=\"https://github.com/ndimares\"\u003e\u003ccode\u003e@​ndimares\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\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/fastapi/fastapi/commit/313723494be79d4b24ccaa60e4f6d1f96c150fed\"\u003e\u003ccode\u003e3137234\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/095dab00c7d7bb3fc5d02da159207d56ac5bc1ea\"\u003e\u003ccode\u003e095dab0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cad6880fd97d6f25d3f05025c88230285386e7f9\"\u003e\u003ccode\u003ecad6880\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13884\"\u003e#13884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a6e79e68a438c3e1f2ff628254d433832f73df53\"\u003e\u003ccode\u003ea6e79e6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c13b1ba4bce313d68f2ebd562b9b0c3267f5158\"\u003e\u003ccode\u003e2c13b1b\u003c/code\u003e\u003c/a\u003e 📝 Add notification about impending changes in Translations to `docs/en/docs/c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7179d48fd774bcbc5f5013bb8f4df61b8c36795f\"\u003e\u003ccode\u003e7179d48\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/07bcb18a5a2ddab8282f4a9d50f63f3c9f46ca8c\"\u003e\u003ccode\u003e07bcb18\u003c/code\u003e\u003c/a\u003e ⬆ [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13871\"\u003e#13871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd8f358fd93416835b06486566b9d9ab991577b6\"\u003e\u003ccode\u003ebd8f358\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/18eb7a708096ab7a19f31a59918bc010aba0ddba\"\u003e\u003ccode\u003e18eb7a7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dd906a998ee2aa41cba98edf13364b34fdc9b1c1\"\u003e\u003ccode\u003edd906a9\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.115.12...0.116.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.18.0 to 3.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd 3.14t (free threading) to matrix by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/434\"\u003etox-dev/filelock#434\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/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for 3.14 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/432\"\u003etox-dev/filelock#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d1009f08a6a64624fad91d1079062ef31b8c2b4\"\u003e\u003ccode\u003e8d1009f\u003c/code\u003e\u003c/a\u003e Update release.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66a428e97a874b44b0310072f6c974226f55a472\"\u003e\u003ccode\u003e66a428e\u003c/code\u003e\u003c/a\u003e Increase test coverage (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0dfc86eebd2c76ae959a409bcbc3112cc1ec5890\"\u003e\u003ccode\u003e0dfc86e\u003c/code\u003e\u003c/a\u003e add 3.14 to matrix (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0c54837e318ebe8a692b529722430cb38134bf7c\"\u003e\u003ccode\u003e0c54837\u003c/code\u003e\u003c/a\u003e Add support for 3.14 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/77d02f5ada3a1a92167b1beee35a7815cbde0fcf\"\u003e\u003ccode\u003e77d02f5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/bc972b33bf253bb9f08db32b19ffd4119a74706e\"\u003e\u003ccode\u003ebc972b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/78d02cb5ff42b22a56ad1a36755361a6b4601765\"\u003e\u003ccode\u003e78d02cb\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/18cdb5d1c78a7a459463480303e9820f33cdf041\"\u003e\u003ccode\u003e18cdb5d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/b198a096d2bae58596479497d18a82bbeec515c8\"\u003e\u003ccode\u003eb198a09\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/6b097e76de603d9be6a24c5058b6fe53ef003afd\"\u003e\u003ccode\u003e6b097e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.18.0...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2025.3.2 to 2025.9.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/f84b99f0d1f079f990db1a219b74df66ab3e7160\"\u003e\u003ccode\u003ef84b99f\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1912\"\u003e#1912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/4e5f7686874953e9130891feb2fac69277ab4ad1\"\u003e\u003ccode\u003e4e5f768\u003c/code\u003e\u003c/a\u003e Feature, Add a lookup of Last-Modified in http file headers (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1909\"\u003e#1909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/cf798ec684e0583906dda1ae6ff40de620c01eca\"\u003e\u003ccode\u003ecf798ec\u003c/code\u003e\u003c/a...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-08-28T14:36:50.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"3363583023","node_id":"PR_kwDOOaPssc6l0hfF","number":50,"state":"open","title":"Bump the python-packages group across 1 directory with 66 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-28T14:36:50.000Z","updated_at":"2025-09-08T13:36:25.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":66,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.1","repository_url":"https://github.com/django/asgiref"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.0.20","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.116.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.74.0","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.34.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.1","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.102.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.3","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.7.0","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.7","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.7.34","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"0.46.2","new_version":"0.47.3","repository_url":"https://github.com/encode/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.21.4","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.55.4","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.16.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.35.0","repository_url":"https://github.com/encode/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 66 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.0.20` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.116.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.7.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.74.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.34.4` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.10.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.2` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.102.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.57b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.7.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.7` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.7.34` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [starlette](https://github.com/encode/starlette) | `0.46.2` | `0.47.3` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.21.4` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.55.4` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.16.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/encode/uvicorn) | `0.34.2` | `0.35.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.10.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\nof asyncio's\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e\nAPI on Python 3.14 or later\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can\nsuppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise.\n(\u003ccode\u003e[#913](https://github.com/agronholm/anyio/issues/913) \u0026lt;https://github.com/agronholm/anyio/pull/913\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover\nonly occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e\n(\u003ccode\u003e[#915](https://github.com/agronholm/anyio/issues/915) \u0026lt;https://github.com/agronholm/anyio/pull/915\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMigrated testing and documentation dependencies from extras to dependency groups\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/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.9.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.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b126e0c01144bd980937b658dd6eaf236150fe63\"\u003e\u003ccode\u003eb126e0c\u003c/code\u003e\u003c/a\u003e Removed unneeded typing workaround (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef1678a65b891ef838525d1f3a658875acb9018a\"\u003e\u003ccode\u003eef1678a\u003c/code\u003e\u003c/a\u003e Migrate work for finished \u003ccode\u003eCurrentThreadExecutor\u003c/code\u003e to previous executor (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/37870f58963c38617a910743ba69311ec8e4e0d0\"\u003e\u003ccode\u003e37870f5\u003c/code\u003e\u003c/a\u003e Fixed reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ec6f666621407674e80d039bf235ba2662193bdb\"\u003e\u003ccode\u003eec6f666\u003c/code\u003e\u003c/a\u003e Add MicroPie framework to \u003ccode\u003eimplementations.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/5eff04dce46b74172a1d6d1c5b02409f0afe33b6\"\u003e\u003ccode\u003e5eff04d\u003c/code\u003e\u003c/a\u003e Lazily bind ApplicationCommunicator to event loop (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.2.0\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.0 (2025-08-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove general \u003ccode\u003eRRCache\u003c/code\u003e performance by storing cache keys in an\nadditional sequence container.  Note that this will increase memory\nconsumption.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/4a238adc490e81db58d843b011afdbe3dd9097a5\"\u003e\u003ccode\u003e4a238ad\u003c/code\u003e\u003c/a\u003e Release v6.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9d511b769f8fb58981fb77fece846984aaaf49e6\"\u003e\u003ccode\u003e9d511b7\u003c/code\u003e\u003c/a\u003e Improve unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/79aa8c7c0eacd5d75e154bc23687ecdaf9ad1d75\"\u003e\u003ccode\u003e79aa8c7\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/356\"\u003e#356\u003c/a\u003e: Improve RRCache performance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.2.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.0.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.20\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.20\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.20\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T17:04\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.20.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[RELEASE] 1.0.20 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5303\"\u003echroma-core/chroma#5303\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.0.18\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.18\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.18\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T08:09\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.18.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHORE]: Added short descriptions to CLI commands by \u003ca href=\"https://github.com/tazarov\"\u003e\u003ccode\u003e@​tazarov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5217\"\u003echroma-core/chroma#5217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use AVX in distance calculations by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5258\"\u003echroma-core/chroma#5258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Auto-set tenant, scoped database in python CloudClient by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5026\"\u003echroma-core/chroma#5026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[PERF]: Modify get_range to return an iterator by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5256\"\u003echroma-core/chroma#5256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Mark dirty on rollback of cursor to guarantee compaction picks it up. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5265\"\u003echroma-core/chroma#5265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add metric for component queue depth \u0026amp; change dispatcher queue depth metric buckets by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5261\"\u003echroma-core/chroma#5261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add garbage collection CLI for manual garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5250\"\u003echroma-core/chroma#5250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Clean up DEVELOP.md by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5270\"\u003echroma-core/chroma#5270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Further optimize query on getCollections when databases pkey is fully specified by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5268\"\u003echroma-core/chroma#5268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Rust to allow build with AVX when flag is set by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5269\"\u003echroma-core/chroma#5269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Fix test_add flake by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5272\"\u003echroma-core/chroma#5272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert \u0026quot;[ENH]: Further optimize query on getCollections when databases pkey is fully specified (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5268\"\u003e#5268\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5273\"\u003echroma-core/chroma#5273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add maturin to dev dependencies by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5271\"\u003echroma-core/chroma#5271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Optimize GetCollections and remove usage of raw gorm by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5274\"\u003echroma-core/chroma#5274\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add config param to garbage collector to control how many collections are fetched from SysDb by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5275\"\u003echroma-core/chroma#5275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Reject version files without paths. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5267\"\u003echroma-core/chroma#5267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Enable getting a collection by CRN by \u003ca href=\"https://github.com/drewkim\"\u003e\u003ccode\u003e@​drewkim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5244\"\u003echroma-core/chroma#5244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] CompactionError did not proxy should_trace_error by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5282\"\u003echroma-core/chroma#5282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Resolve deadlock in system crate? by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5283\"\u003echroma-core/chroma#5283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Complete the NAC metrics for the write half. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5278\"\u003echroma-core/chroma#5278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: fix missing node in constructed version graph for garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5284\"\u003echroma-core/chroma#5284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix test flake from 5283. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5287\"\u003echroma-core/chroma#5287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Don't GC hnsw if it is empty by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5295\"\u003echroma-core/chroma#5295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Sync before flushing by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5296\"\u003echroma-core/chroma#5296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota limits by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5297\"\u003echroma-core/chroma#5297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix CLI copy offset by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5288\"\u003echroma-core/chroma#5288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add support for default space in create coll config by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5293\"\u003echroma-core/chroma#5293\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/chroma-core/chroma/commit/b6b059dfd71525f9abad931ec30063bae177696f\"\u003e\u003ccode\u003eb6b059d\u003c/code\u003e\u003c/a\u003e [RELEASE] 1.0.20 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5303\"\u003e#5303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/1993cd4a515b40faac8e2c7c7d65526445959f0b\"\u003e\u003ccode\u003e1993cd4\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.8, Python 1.0.19, JS 3.0.14 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5302\"\u003e#5302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/19600af2796fffbe1781ef486ee324851877f88f\"\u003e\u003ccode\u003e19600af\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy arg number types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5301\"\u003e#5301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d3602cd776b2e3716ba3c9685a6571c1933489bc\"\u003e\u003ccode\u003ed3602cd\u003c/code\u003e\u003c/a\u003e [CHORE] Update JS binding deps in the client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5300\"\u003e#5300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2570b471edc5a47fc271eddfa37d8e4236ac0f21\"\u003e\u003ccode\u003e2570b47\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.7, Python 1.0.18, JS 3.0.13 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5299\"\u003e#5299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/51a7d1625b3b41083891f1c600e15131a321ae5e\"\u003e\u003ccode\u003e51a7d16\u003c/code\u003e\u003c/a\u003e [ENH] Add support for default space in create coll config (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5293\"\u003e#5293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/163133aacc9dab8a9e7d871db031d6e159ea1322\"\u003e\u003ccode\u003e163133a\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy offset (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5288\"\u003e#5288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f06586503be2603d49bd47c1315001460dac947\"\u003e\u003ccode\u003e2f06586\u003c/code\u003e\u003c/a\u003e [DOC] update quota limits (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5297\"\u003e#5297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/983728076d253409791709d5dbbed0657e30b6d9\"\u003e\u003ccode\u003e9837280\u003c/code\u003e\u003c/a\u003e [ENH] Sync before flushing (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5296\"\u003e#5296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/649e14c530fe46b0e5dec84ce2f5b25a28b79a2e\"\u003e\u003ccode\u003e649e14c\u003c/code\u003e\u003c/a\u003e [BUG]: Don't GC hnsw if it is empty (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5295\"\u003e#5295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.0.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.116.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.116.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13884\"\u003e#13884\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📝 Add notification about impending changes in Translations to \u003ccode\u003edocs/en/docs/contributing.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13886\"\u003e#13886\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13871\"\u003e#13871\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.116.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for deploying to FastAPI Cloud with \u003ccode\u003efastapi deploy\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13870\"\u003e#13870\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\u003cp\u003eInstalling \u003ccode\u003efastapi[standard]\u003c/code\u003e now includes \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis will allow you to deploy to \u003ca href=\"https://fastapicloud.com\"\u003eFastAPI Cloud\u003c/a\u003e with the \u003ccode\u003efastapi deploy\u003c/code\u003e command.\u003c/p\u003e\n\u003cp\u003eIf you want to install \u003ccode\u003efastapi\u003c/code\u003e with the standard dependencies but without \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e, you can install instead \u003ccode\u003efastapi[standard-no-fastapi-cloud-cli]\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13801\"\u003e#13801\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/additional-status-codes.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13799\"\u003e#13799\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Ukrainian translation for \u003ccode\u003edocs/uk/docs/tutorial/body-updates.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13804\"\u003e#13804\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\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 pillow from 11.1.0 to 11.3.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13852\"\u003e#13852\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 FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13846\"\u003e#13846\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13848\"\u003e#13848\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 mkdocs-material from 9.6.1 to 9.6.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13849\"\u003e#13849\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13843\"\u003e#13843\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13845\"\u003e#13845\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.115.14\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for unions when using \u003ccode\u003eForm\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13827\"\u003e#13827\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\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✏️ Fix grammar mistake in \u003ccode\u003edocs/en/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13800\"\u003e#13800\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Speakeasy URL to Speakeasy Sandbox. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13697\"\u003e#13697\u003c/a\u003e by \u003ca href=\"https://github.com/ndimares\"\u003e\u003ccode\u003e@​ndimares\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\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/fastapi/fastapi/commit/313723494be79d4b24ccaa60e4f6d1f96c150fed\"\u003e\u003ccode\u003e3137234\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/095dab00c7d7bb3fc5d02da159207d56ac5bc1ea\"\u003e\u003ccode\u003e095dab0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cad6880fd97d6f25d3f05025c88230285386e7f9\"\u003e\u003ccode\u003ecad6880\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13884\"\u003e#13884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a6e79e68a438c3e1f2ff628254d433832f73df53\"\u003e\u003ccode\u003ea6e79e6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c13b1ba4bce313d68f2ebd562b9b0c3267f5158\"\u003e\u003ccode\u003e2c13b1b\u003c/code\u003e\u003c/a\u003e 📝 Add notification about impending changes in Translations to `docs/en/docs/c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7179d48fd774bcbc5f5013bb8f4df61b8c36795f\"\u003e\u003ccode\u003e7179d48\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/07bcb18a5a2ddab8282f4a9d50f63f3c9f46ca8c\"\u003e\u003ccode\u003e07bcb18\u003c/code\u003e\u003c/a\u003e ⬆ [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13871\"\u003e#13871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd8f358fd93416835b06486566b9d9ab991577b6\"\u003e\u003ccode\u003ebd8f358\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/18eb7a708096ab7a19f31a59918bc010aba0ddba\"\u003e\u003ccode\u003e18eb7a7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dd906a998ee2aa41cba98edf13364b34fdc9b1c1\"\u003e\u003ccode\u003edd906a9\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.115.12...0.116.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.18.0 to 3.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd 3.14t (free threading) to matrix by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/434\"\u003etox-dev/filelock#434\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/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for 3.14 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/432\"\u003etox-dev/filelock#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d1009f08a6a64624fad91d1079062ef31b8c2b4\"\u003e\u003ccode\u003e8d1009f\u003c/code\u003e\u003c/a\u003e Update release.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66a428e97a874b44b0310072f6c974226f55a472\"\u003e\u003ccode\u003e66a428e\u003c/code\u003e\u003c/a\u003e Increase test coverage (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0dfc86eebd2c76ae959a409bcbc3112cc1ec5890\"\u003e\u003ccode\u003e0dfc86e\u003c/code\u003e\u003c/a\u003e add 3.14 to matrix (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0c54837e318ebe8a692b529722430cb38134bf7c\"\u003e\u003ccode\u003e0c54837\u003c/code\u003e\u003c/a\u003e Add support for 3.14 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/77d02f5ada3a1a92167b1beee35a7815cbde0fcf\"\u003e\u003ccode\u003e77d02f5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/bc972b33bf253bb9f08db32b19ffd4119a74706e\"\u003e\u003ccode\u003ebc972b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/78d02cb5ff42b22a56ad1a36755361a6b4601765\"\u003e\u003ccode\u003e78d02cb\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/18cdb5d1c78a7a459463480303e9820f33cdf041\"\u003e\u003ccode\u003e18cdb5d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/b198a096d2bae58596479497d18a82bbeec515c8\"\u003e\u003ccode\u003eb198a09\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/6b097e76de603d9be6a24c5058b6fe53ef003afd\"\u003e\u003ccode\u003e6b097e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.18.0...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2025.3.2 to 2025.7.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/852f892f497940fc246d335a0ac7b3b3d93530fc\"\u003e\u003ccode\u003e852f892\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1891\"\u003e#1891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/97e5913518b4b11805394add1488ae93c62303cd\"\u003e\u003ccode\u003e97e5913\u003c/code\u003e\u003c/a\u003e Ruff legacy alias (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1887\"\u003e#1887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/57b7381ad92455ea0d4861e5e3531a77b823fc1f\"\u003e\u003ccode\u003e57b7381\u003c/code\u003e\u003c/a\u003e Remove any...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/50","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/50","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/50/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-08-26T16:47:17.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2775813235","node_id":"PR_kwDOHUSeqs6lc4xz","number":429,"state":"closed","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["approved","size/M","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":"2025-09-22T21:04:33.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-26T16:47:17.000Z","updated_at":"2025-09-22T21:04:33.000Z","time_to_close":2348236,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":15,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.0.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.28.4","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"6.2.1","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.5"},{"name":"mypy","old_version":"1.16.0","new_version":"1.17.1","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.3.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.0` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.0.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.28.4` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `6.2.1` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.5` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.17.1` |\n\n\nUpdates `requests` from 2.32.4 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\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\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.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a check for partial response data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1487\"\u003e#1487\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7e0412a4fdfedcaa4683d5ef7d9155d5d58efa11\"\u003e7e0412a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trove classifier for Python 3.13 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require google-crc32c \u0026gt;= 1.1.3 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require protobuf \u0026gt;= 3.20.2, \u0026lt; 7.0.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require requests \u0026gt;= 2.22.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove setup.cfg configuration for creating universal wheels (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1448\"\u003e#1448\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d3b6b3f96a6f94aa7c371902f48d1363ae6bfb5c\"\u003ed3b6b3f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve issue where pre-release versions of dependencies are installed (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSegmentation fault in tink while writing data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1490\"\u003e#1490\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2a46c0b9e6ec561ae3151d2a9a80c7452634487e\"\u003e2a46c0b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove quickstart to top of readme (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1451\"\u003e#1451\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/53257cf20a4de3810156ae9576a7092f5527df98\"\u003e53257cf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README to break infinite redirect loop (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1450\"\u003e#1450\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/03f1594eb90ea1298a3a23927537c86ac35d33d5\"\u003e03f1594\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a check for partial response data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1487\"\u003e#1487\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7e0412a4fdfedcaa4683d5ef7d9155d5d58efa11\"\u003e7e0412a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd trove classifier for Python 3.13 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require google-crc32c \u0026gt;= 1.1.3 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require protobuf \u0026gt;= 3.20.2, \u0026lt; 7.0.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Require requests \u0026gt;= 2.22.0 (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove setup.cfg configuration for creating universal wheels (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1448\"\u003e#1448\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d3b6b3f96a6f94aa7c371902f48d1363ae6bfb5c\"\u003ed3b6b3f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve issue where pre-release versions of dependencies are installed (\u003ca href=\"https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7\"\u003e0100916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSegmentation fault in tink while writing data (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1490\"\u003e#1490\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2a46c0b9e6ec561ae3151d2a9a80c7452634487e\"\u003e2a46c0b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove quickstart to top of readme (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1451\"\u003e#1451\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/53257cf20a4de3810156ae9576a7092f5527df98\"\u003e53257cf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate README to break infinite redirect loop (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1450\"\u003e#1450\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/03f1594eb90ea1298a3a23927537c86ac35d33d5\"\u003e03f1594\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/googleapis/python-storage/commit/e84906c2252e98c2906d5d0e0da2249deb0c134a\"\u003e\u003ccode\u003ee84906c\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1508\"\u003e#1508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003e\u003ccode\u003ea29073c\u003c/code\u003e\u003c/a\u003e feat: add support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e\u003ccode\u003e6a9923e\u003c/code\u003e\u003c/a\u003e Fix: Add logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/083a505e1f43c20657570c74ec707485f4b3989d\"\u003e\u003ccode\u003e083a505\u003c/code\u003e\u003c/a\u003e chore: improve docs for list_files_with_prefix (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1517\"\u003e#1517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/61bd57509ab3966f4382656200f2600ce41cce24\"\u003e\u003ccode\u003e61bd575\u003c/code\u003e\u003c/a\u003e chore: remove duplicates in coveragerc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5964009c0efae9c84a9433715d74befca7ddf98d\"\u003e\u003ccode\u003e5964009\u003c/code\u003e\u003c/a\u003e chore: exclude autogenerated .coveragerc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1510\"\u003e#1510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0eb45b5a808ad149c1c85d1ab9ea693d7365d5c1\"\u003e\u003ccode\u003e0eb45b5\u003c/code\u003e\u003c/a\u003e feat: Add new field \u003ccode\u003econtexts\u003c/code\u003e for Object Contexts in message \u003ccode\u003eObject\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1502\"\u003e#1502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/edde9506af9c313036573e4e51d7b94d03c3118f\"\u003e\u003ccode\u003eedde950\u003c/code\u003e\u003c/a\u003e samples: add samples for move api to rename an object (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1505\"\u003e#1505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/500c0d07d3a239c3b52c9aa6ce434f5bb3202823\"\u003e\u003ccode\u003e500c0d0\u003c/code\u003e\u003c/a\u003e chore: fix the errors for GAPIC (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e\u003ccode\u003e72252e9\u003c/code\u003e\u003c/a\u003e docs: update the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\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/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.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/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/commit/53572f6532876fde279abfa63a47c056dc485540\"\u003e\u003ccode\u003e53572f6\u003c/code\u003e\u003c/a\u003e Update uv lock file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/3b5a65f1431eb2b17957af05b41ebc031d894d68\"\u003e\u003ccode\u003e3b5a65f\u003c/code\u003e\u003c/a\u003e version changes for v6.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/6b7565b594a0640f4181f4d1a027c1235f8eff7c\"\u003e\u003ccode\u003e6b7565b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5318\"\u003e#5318\u003c/a\u003e from plotly/update-plotlyjs-3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c2225b79f337bb4ae42268d50fb2d77c1ccd684f\"\u003e\u003ccode\u003ec2225b7\u003c/code\u003e\u003c/a\u003e add DeprecationWarning for upcoming change in locationmode 'country names'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/deef7a3345e42374ef16d181beb3922d38631343\"\u003e\u003ccode\u003edeef7a3\u003c/code\u003e\u003c/a\u003e update plotly/labextension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/0589b229076c3c75ad40fa3875f276e1e5e7dfe8\"\u003e\u003ccode\u003e0589b22\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/694b0366419228b05b67ee6f34ee2d1c53734360\"\u003e\u003ccode\u003e694b036\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5308\"\u003e#5308\u003c/a\u003e from plotly/update-doc-string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/480a1aff40c631fdd34df16e50beb75debdce60b\"\u003e\u003ccode\u003e480a1af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5287\"\u003e#5287\u003c/a\u003e from jdbeel/update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c07de25a169eb36bc895755be1cfcb79fcada21f\"\u003e\u003ccode\u003ec07de25\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/9f4b774e783c9eea70fcc9631a18d107ea3fe845\"\u003e\u003ccode\u003e9f4b774\u003c/code\u003e\u003c/a\u003e Update _json.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.4.0-rc.5\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0-rc.4...v0.4.0.rc.5\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0-rc.4...v0.4.0.rc.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.4.0-rc.4\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0-rc.3...v0.4.0-rc.4\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0-rc.3...v0.4.0-rc.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.4.0-rc.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\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/plotly/Kaleido/commit/99820ae4a828666aafd9df432b9aad787d7a95e4\"\u003e\u003ccode\u003e99820ae\u003c/code\u003e\u003c/a\u003e Update README and CHANGELOG for v1 release (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/48c931e0f402e8a20dcc456139db9f8e0b7813da\"\u003e\u003ccode\u003e48c931e\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/2d13f312454b24ce4efdb8befb146ff361001517\"\u003e\u003ccode\u003e2d13f31\u003c/code\u003e\u003c/a\u003e use exc_info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e4eeb3b1114c9f394a9e302ce94e7cadc2696f04\"\u003e\u003ccode\u003ee4eeb3b\u003c/code\u003e\u003c/a\u003e wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/7f841b2f25311bb0f5fd13fbfe4bd9ed23484baa\"\u003e\u003ccode\u003e7f841b2\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/53da5d68f5491c411c4d5467690c66eaed1e59ac\"\u003e\u003ccode\u003e53da5d6\u003c/code\u003e\u003c/a\u003e add 'packaging' to dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/d24f0fdace8fff06558546f7bd342e5f2d24640c\"\u003e\u003ccode\u003ed24f0fd\u003c/code\u003e\u003c/a\u003e show warning if incompatible plotly version is installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/eb21c13199ed6f3da480ab84e0403f05496a50ad\"\u003e\u003ccode\u003eeb21c13\u003c/code\u003e\u003c/a\u003e Andrew/sanitize title (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/340\"\u003e#340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fd7da8008adc33a88a8f45f0f0bf44bec76f441c\"\u003e\u003ccode\u003efd7da80\u003c/code\u003e\u003c/a\u003e Sanitize glob as well\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/f5694c78995f245f8f032020483f1273887ca547\"\u003e\u003ccode\u003ef5694c7\u003c/code\u003e\u003c/a\u003e Update CHANGELOG\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\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/pandas-dev/pandas/commit/4665c10899bc413b639194f6fb8665a5c70f7db5\"\u003e\u003ccode\u003e4665c10\u003c/code\u003e\u003c/a\u003e RLS: 2.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/633c68b91808441eba7d73b630a82b713ba19da8\"\u003e\u003ccode\u003e633c68b\u003c/code\u003e\u003c/a\u003e DOC: fix syntax in whatsnew file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/456ad4702cb017aab36e2d09a4029b1b085198f5\"\u003e\u003ccode\u003e456ad47\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62152\"\u003e#62152\u003c/a\u003e on branch 2.3.x (DOC: prepare 2.3.2 whatsnew notes for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6cae6444444ed7943ceffbd5990cd8249dd5b47c\"\u003e\u003ccode\u003e6cae644\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: move and reword whatsnew note for replace fix (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/57865\"\u003eGH-57865\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/a91c50a58c372cddf104fd60241c7284bbf8fc80\"\u003e\u003ccode\u003ea91c50a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62147\"\u003e#62147\u003c/a\u003e on branch 2.3.x (DOC: correct and rewrite string migration...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f7a2cfdf2ed08016167ae6c5e577c54949a849b2\"\u003e\u003ccode\u003ef7a2cfd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG/DEPR: logical operation with bool and string (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/61995\"\u003e#61995\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/7981a43db4339826a3ce5020e9b1b931e604e5bd\"\u003e\u003ccode\u003e7981a43\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62124\"\u003e#62124\u003c/a\u003e on branch 2.3.x (CI/BLD: don't use strict xfail for '%m.%Y...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/fafbcbd03d1721830f4df8255abdab341db2a583\"\u003e\u003ccode\u003efafbcbd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG(CoW): also raise for chained assignment for .at / .iat (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3ac64a714886d917ca24ba637a85c4aaf563fc1b\"\u003e\u003ccode\u003e3ac64a7\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: Fix Series.str.contains with compiled regex on Arrow st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/1f2dc4fd8a2503773b6f90cb5e8cc5c3172c3c11\"\u003e\u003ccode\u003e1f2dc4f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix Series.str.fullmatch() and Series.str.match() with ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.3.0...v2.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.26.0 to 4.28.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.28.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3570\"\u003etox-dev/tox#3570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass ssh-agent variables by default by \u003ca href=\"https://github.com/daniilgankov\"\u003e\u003ccode\u003e@​daniilgankov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3572\"\u003etox-dev/tox#3572\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/daniilgankov\"\u003e\u003ccode\u003e@​daniilgankov\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3572\"\u003etox-dev/tox#3572\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.28.3...4.28.4\"\u003ehttps://github.com/tox-dev/tox/compare/4.28.3...4.28.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.28.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo on cmd_build filter check expression by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3569\"\u003etox-dev/tox#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.28.2...4.28.3\"\u003ehttps://github.com/tox-dev/tox/compare/4.28.2...4.28.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.28.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon't pass in the filter argument to tar.extractall on old Python versions by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3568\"\u003etox-dev/tox#3568\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.28.1...4.28.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.28.1...4.28.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.28.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix an issue number typo in changelog by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3563\"\u003etox-dev/tox#3563\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/tox-dev/tox/pull/3564\"\u003etox-dev/tox#3564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use tarfile.data_filter when it's available by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.githu...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/429","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/429","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/429/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-08-26T00:35:28.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2773373297","node_id":"PR_kwDOOaPssc6lTlFx","number":49,"state":"open","title":"Bump the python-packages group across 1 directory with 65 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-26T00:35:28.000Z","updated_at":"2025-08-26T00:35:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":65,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.10.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.9.1","repository_url":"https://github.com/django/asgiref"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.13.5"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.2","new_version":"6.1.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.8.3","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.3","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"chromadb","old_version":"1.0.8","new_version":"1.0.20","repository_url":"https://github.com/chroma-core/chroma"},{"name":"dateparser","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"durationpy","old_version":"0.9","new_version":"0.10","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.115.12","new_version":"0.116.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.18.0","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fsspec","old_version":"2025.3.2","new_version":"2025.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.40.0","new_version":"2.40.3","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.74.0","repository_url":"https://github.com/grpc/grpc"},{"name":"huggingface-hub","old_version":"0.30.2","new_version":"0.34.4","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"jiter","old_version":"0.9.0","new_version":"0.10.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kubernetes","old_version":"32.0.1","new_version":"33.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.1","repository_url":"https://github.com/lxml/lxml"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"oauthlib","old_version":"3.2.2","new_version":"3.3.1","repository_url":"https://github.com/oauthlib/oauthlib"},{"name":"openai","old_version":"1.77.0","new_version":"1.101.0","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.32.1","new_version":"1.36.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.53b1","new_version":"0.57b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.10.18","new_version":"3.11.2","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"11.2.1","new_version":"11.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"posthog","old_version":"4.0.1","new_version":"6.6.1","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"6.30.2","new_version":"6.32.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic","old_version":"2.11.4","new_version":"2.11.7","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.34.1","new_version":"2.39.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymupdf","old_version":"1.25.5","new_version":"1.26.4","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.7.34","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.1.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.24.0","new_version":"0.27.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.6.2","repository_url":"https://github.com/huggingface/safetensors"},{"name":"sentence-transformers","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/UKPLab/sentence-transformers"},{"name":"starlette","old_version":"0.46.2","new_version":"0.47.3","repository_url":"https://github.com/encode/starlette"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.11.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tld","old_version":"0.13","new_version":"0.13.1","repository_url":"https://github.com/barseghyanartur/tld"},{"name":"tokenizers","old_version":"0.21.1","new_version":"0.21.4","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"transformers","old_version":"4.51.3","new_version":"4.55.4","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.15.3","new_version":"0.16.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.35.0","repository_url":"https://github.com/encode/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"1.17.2","new_version":"1.17.3","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.21.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 65 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.10.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.9.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.13.5` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.2` | `6.1.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.8.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.3` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.8` | `1.0.20` |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.2.1` | `1.2.2` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.9` | `0.10` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.116.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.19.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.2` | `2025.7.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.40.0` | `2.40.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.74.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `0.30.2` | `0.34.4` |\n| [jiter](https://github.com/pydantic/jiter) | `0.9.0` | `0.10.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.0` | `1.5.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `32.0.1` | `33.1.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [oauthlib](https://github.com/oauthlib/oauthlib) | `3.2.2` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `1.77.0` | `1.101.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.32.1` | `1.36.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.53b1` | `0.57b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.53b1` | `0.57b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.10.18` | `3.11.2` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `11.3.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.0.1` | `6.6.1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.30.2` | `6.32.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.7` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.34.1` | `2.39.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.5` | `1.26.4` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.1.1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.7.34` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.24.0` | `0.27.0` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.6.2` |\n| [sentence-transformers](https://github.com/UKPLab/sentence-transformers) | `4.1.0` | `5.1.0` |\n| [starlette](https://github.com/encode/starlette) | `0.46.2` | `0.47.3` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.11.0` |\n| [tld](https://github.com/barseghyanartur/tld) | `0.13` | `0.13.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.1` | `0.21.4` |\n| [torch](https://github.com/pytorch/pytorch) | `2.7.0` | `2.8.0` |\n| [transformers](https://github.com/huggingface/transformers) | `4.51.3` | `4.55.4` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.16.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.0` | `0.4.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |\n| [uvicorn](https://github.com/encode/uvicorn) | `0.34.2` | `0.35.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` |\n| [zipp](https://github.com/jaraco/zipp) | `3.21.0` | `3.23.0` |\n\n\nUpdates `anyio` from 4.9.0 to 4.10.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.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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\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\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a hierarchy of connectable stream classes for transparently connecting to\nvarious remote or local endpoints for exchanging bytes or objects\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and\n\u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context\nmanagers, particularly cancel scopes or task groups\n(\u003ccode\u003e[#905](https://github.com/agronholm/anyio/issues/905) \u0026lt;https://github.com/agronholm/anyio/pull/905\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and\n\u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e\n(\u003ccode\u003e[#818](https://github.com/agronholm/anyio/issues/818) \u0026lt;https://github.com/agronholm/anyio/issues/818\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e\nand \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things,\nthis prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e.\n(\u003ccode\u003e[#896](https://github.com/agronholm/anyio/issues/896) \u0026lt;https://github.com/agronholm/anyio/pull/896\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint\n(special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and\nChristoffer Fjord)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead\nof asyncio's\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e\nAPI on Python 3.14 or later\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can\nsuppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise.\n(\u003ccode\u003e[#913](https://github.com/agronholm/anyio/issues/913) \u0026lt;https://github.com/agronholm/anyio/pull/913\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover\nonly occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e\n(\u003ccode\u003e[#915](https://github.com/agronholm/anyio/issues/915) \u0026lt;https://github.com/agronholm/anyio/pull/915\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMigrated testing and documentation dependencies from extras to dependency groups\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/agronholm/anyio/commit/0cf55b8277128726c8d5720a4fda29ec1ffccfb6\"\u003e\u003ccode\u003e0cf55b8\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b029df574164e0df7e542fa4fd01abdbb7db7345\"\u003e\u003ccode\u003eb029df5\u003c/code\u003e\u003c/a\u003e Updated the to_interpreter module to use the public API on Python 3.14 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/956\"\u003e#956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/01f02cf5ee9a706c89f57ef58c30de3cbf87abb1\"\u003e\u003ccode\u003e01f02cf\u003c/code\u003e\u003c/a\u003e Incorporated EP2025 sprint feedback and added a new section (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/955\"\u003e#955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d89648054c8a939fbde1cc2d590aa875b9139aa4\"\u003e\u003ccode\u003ed896480\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0282b814c0067b5fa336d339b4bd57ed6e62266c\"\u003e\u003ccode\u003e0282b81\u003c/code\u003e\u003c/a\u003e Added the BufferedByteReceiveStream.feed_data() method (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/945\"\u003e#945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e5477238d37499de42ebedf99c557848479cfb\"\u003e\u003ccode\u003e19e5477\u003c/code\u003e\u003c/a\u003e Fixed a cancellation edge case for asyncio CapacityLimiter (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/952\"\u003e#952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/4666df3905af92ac02b515e0827ff9510dcba827\"\u003e\u003ccode\u003e4666df3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/38c256709dc8d34de57a43faeab72c935e74ad6e\"\u003e\u003ccode\u003e38c2567\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3db73acbf7d715bc47fe9fd6d190374afa3132fb\"\u003e\u003ccode\u003e3db73ac\u003c/code\u003e\u003c/a\u003e Add missing imports for Readcting to cancellation in worker threads example (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/2eda004497cc7ab2b8c1ede4d7c4c276f0840fd9\"\u003e\u003ccode\u003e2eda004\u003c/code\u003e\u003c/a\u003e Added an example on how to use move_on_after() with shielding\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.8.1 to 3.9.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.9.1 (2025-07-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip CPython specific garbage collection test on pypy. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.9.0 (2025-07-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdds support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrops support for (end-of-life) Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes an error with conflicting kwargs between AsyncToSync and the wrapped\nfunction. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/471\"\u003e#471\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes Local isolation between asyncio Tasks. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/478\"\u003e#478\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes a deadlock in CurrentThreadExecutor with nested async_to_sync →\nsync_to_async → async_to_sync → create_task calls. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe ApplicationCommunicator testing utility will now return the task result\nif it's already completed on send_input and receive_nothing. You may need to\ncatch (e.g.) the asyncio.exceptions.CancelledError if sending messages to\nalready finished consumers in your tests. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fbe9506df140a437921a01ea824dbe51d8c38c24\"\u003e\u003ccode\u003efbe9506\u003c/code\u003e\u003c/a\u003e Releasing 3.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fae2ab10f12858b529b01e6e812abac6aa1f6128\"\u003e\u003ccode\u003efae2ab1\u003c/code\u003e\u003c/a\u003e Fixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f43e1120286d2b7537547603a1534569e8d8f1a6\"\u003e\u003ccode\u003ef43e112\u003c/code\u003e\u003c/a\u003e Adjust changelog for ApplicationCommunicator updates. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/f22bea26ff268c26253e827b127be76b61a612cf\"\u003e\u003ccode\u003ef22bea2\u003c/code\u003e\u003c/a\u003e Skip garbage collection test on PyPy (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/fc0599e122edcde0f84962b219ea591428124106\"\u003e\u003ccode\u003efc0599e\u003c/code\u003e\u003c/a\u003e Releasing 3.9.0. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/b126e0c01144bd980937b658dd6eaf236150fe63\"\u003e\u003ccode\u003eb126e0c\u003c/code\u003e\u003c/a\u003e Removed unneeded typing workaround (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef1678a65b891ef838525d1f3a658875acb9018a\"\u003e\u003ccode\u003eef1678a\u003c/code\u003e\u003c/a\u003e Migrate work for finished \u003ccode\u003eCurrentThreadExecutor\u003c/code\u003e to previous executor (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/494\"\u003e#494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/37870f58963c38617a910743ba69311ec8e4e0d0\"\u003e\u003ccode\u003e37870f5\u003c/code\u003e\u003c/a\u003e Fixed reference cycle in Local (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ec6f666621407674e80d039bf235ba2662193bdb\"\u003e\u003ccode\u003eec6f666\u003c/code\u003e\u003c/a\u003e Add MicroPie framework to \u003ccode\u003eimplementations.rst\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/5eff04dce46b74172a1d6d1c5b02409f0afe33b6\"\u003e\u003ccode\u003e5eff04d\u003c/code\u003e\u003c/a\u003e Lazily bind ApplicationCommunicator to event loop (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/505\"\u003e#505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.9.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.13.5\n\nUpdates `build` from 1.2.2.post1 to 1.3.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.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e, fixes issue \u003ca href=\"https://redirect.github.com/pypa/build/issues/900\"\u003e#900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/891\"\u003e#891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+ (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/895\"\u003e#895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/898\"\u003e#898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/861\"\u003e#861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/892\"\u003e#892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/871\"\u003e#871\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/872\"\u003e#872\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/738\"\u003e#738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/824\"\u003e#824\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/918\"\u003e#918\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/870\"\u003e#870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/915\"\u003e#915\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/862\"\u003e#862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/863\"\u003e#863\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/899\"\u003e#899\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/896\"\u003e#896\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs (PR \u003ca href=\"https://redirect.github.com/pypa/build/issues/842\"\u003e#842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/816\"\u003e#816\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/build/issues/917\"\u003e#917\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.3.0 (2025-08-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--config-json\u003c/code\u003e\n(PR :pr:\u003ccode\u003e916\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e900\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8\n(PR :pr:\u003ccode\u003e891\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest on Python 3.14, colorful help on 3.14+\n(PR :pr:\u003ccode\u003e895\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModuleNotFoundError\u003c/code\u003e when \u003ccode\u003epip\u003c/code\u003e is not installed\n(PR :pr:\u003ccode\u003e898\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDisable use of \u003ccode\u003epip install --python\u003c/code\u003e for debundled pip\n(PR :pr:\u003ccode\u003e861\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDon't pass no-wheel to virtualenv if it would warn\n(PR :pr:\u003ccode\u003e892\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize our tests to run faster\n(PR :pr:\u003ccode\u003e871\u003c/code\u003e, :pr:\u003ccode\u003e872\u003c/code\u003e, :pr:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAllow running our tests without virtualenv\n(PR :pr:\u003ccode\u003e911\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues in our tests\n(PR :pr:\u003ccode\u003e824\u003c/code\u003e, :pr:\u003ccode\u003e918\u003c/code\u003e, :pr:\u003ccode\u003e870\u003c/code\u003e, :pr:\u003ccode\u003e915\u003c/code\u003e, :pr:\u003ccode\u003e862\u003c/code\u003e, :pr:\u003ccode\u003e863\u003c/code\u003e, :pr:\u003ccode\u003e899\u003c/code\u003e, :pr:\u003ccode\u003e896\u003c/code\u003e, :pr:\u003ccode\u003e854\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse SPDX identifiers for our license metadata\n(PR :pr:\u003ccode\u003e914\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse dependency-groups for our development\n(PR :pr:\u003ccode\u003e880\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMention conda and update uv mention in README/docs\n(PR :pr:\u003ccode\u003e842\u003c/code\u003e, :pr:\u003ccode\u003e816\u003c/code\u003e, :pr:\u003ccode\u003e917\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.2 (2024-09-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd editable to \u003ccode\u003ebuilder.get_requries_for_build\u003c/code\u003e's static types\n(PR :pr:\u003ccode\u003e764\u003c/code\u003e, fixes issue :issue:\u003ccode\u003e763\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eInclude artifact attestations in our release\n(PR :pr:\u003ccode\u003e782\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix typing compatibility with typed \u003ccode\u003epyproject-hooks\u003c/code\u003e\n(PR :pr:\u003ccode\u003e788\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMark more tests with \u003ccode\u003enetwork\u003c/code\u003e\n(PR :pr:\u003ccode\u003e808\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more intersphinx links to docs\n(PR :pr:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003euv\u003c/code\u003e optional for tests\n(PR :pr:\u003ccode\u003e807\u003c/code\u003e and :pr:\u003ccode\u003e813\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.2.1 (2024-03-28)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid error when terminal width is undetectable on Python \u0026lt; 3.11\n(PR :pr:\u003ccode\u003e761\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/pypa/build/commit/60e8752f69178d2b2c3563e9c8fa17aa6e11b12c\"\u003e\u003ccode\u003e60e8752\u003c/code\u003e\u003c/a\u003e chore: bump to 1.3.0 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/919\"\u003e#919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/807cfba618bc4f7b13e938ffa395fffd82494383\"\u003e\u003ccode\u003e807cfba\u003c/code\u003e\u003c/a\u003e feat: add --config-json (\u003ca href=\"https://redirect.github.com/pypa/build/issues/916\"\u003e#916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bf54ad04ffe30e7f7847ea0bcbc081b550830950\"\u003e\u003ccode\u003ebf54ad0\u003c/code\u003e\u003c/a\u003e tests: fix issues with ignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/53852df8d84d1d17afaa851d4e1cc3754676bb29\"\u003e\u003ccode\u003e53852df\u003c/code\u003e\u003c/a\u003e docs: uv example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b983371befe0547b312aba36083b859d923d9bfc\"\u003e\u003ccode\u003eb983371\u003c/code\u003e\u003c/a\u003e tests: optional virtualenv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6cd157ad0b614a76a13374032a4f56b65048c0be\"\u003e\u003ccode\u003e6cd157a\u003c/code\u003e\u003c/a\u003e Adopt PEP 639 \u0026quot;license\u0026quot; field (\u003ca href=\"https://redirect.github.com/pypa/build/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bdaea367438b8e5ed3c26a7497eafc007084fbec\"\u003e\u003ccode\u003ebdaea36\u003c/code\u003e\u003c/a\u003e tests: fixes for errors in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/14d6508679e2ddb4a511b4b41e972cb374e9dadb\"\u003e\u003ccode\u003e14d6508\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/59ac60e78e0dc5164355bd29eb99fb1cb2d7a59c\"\u003e\u003ccode\u003e59ac60e\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/48ebd63cd7049dff737093c462970262ae1ceed0\"\u003e\u003ccode\u003e48ebd63\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.5.2 to 6.1.0\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.1.0 (2025-06-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove \u003ccode\u003eLFUCache\u003c/code\u003e insertion performance by switching to an\nimplementation based on the \u003ccode\u003ecacheing \u0026lt;https://pypi.org/project/cacheing/\u0026gt;\u003c/code\u003e_ library.\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.0.0 (2025-05-23)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.9 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eMRUCache\u003c/code\u003e and the \u003ccode\u003e@func.mru_cache\u003c/code\u003e decorator (breaking\nchange).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003econdition\u003c/code\u003e parameter to the \u003ccode\u003e@cached\u003c/code\u003e and\n\u003ccode\u003e@cachedmethod\u003c/code\u003e decorators, which, when used with a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance, should improve \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues in massively\nparallel environments.  Note that this will inflict some performance\npenalty, and therefore has to be enabled explicitly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003ecachetools.func\u003c/code\u003e decorators to use a\n\u003ccode\u003ethreading.Condition\u003c/code\u003e instance to deal with \u003ccode\u003ecache stampede \u0026lt;https://en.wikipedia.org/wiki/Cache_stampede\u0026gt;\u003c/code\u003e_ issues.  Note that\nthis \u003cem\u003emay\u003c/em\u003e result in a noticable performance degradation, depending\non your actual use case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e to suppress\ncaching with the \u003ccode\u003e@cachedmethod\u003c/code\u003e decorator.\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\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/tkem/cachetools/commit/bb6d71a745785429b14aae30b7752f4765dc35c3\"\u003e\u003ccode\u003ebb6d71a\u003c/code\u003e\u003c/a\u003e Release v6.1.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/77a9c59e3324496a79e6c4d5a7b5bfdb9a7f7f42\"\u003e\u003ccode\u003e77a9c59\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/260\"\u003e#260\u003c/a\u003e: Use LFUCache implementation based on Blake Reid's \u0026quot;cacheing\u0026quot; library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b1d4eb2972ca8f0ab49e22eae3bb47c1eb8b552c\"\u003e\u003ccode\u003eb1d4eb2\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.2 to 5.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/820b154494e91aa5bfe63a3fa2033c63a9c84603\"\u003e\u003ccode\u003e820b154\u003c/code\u003e\u003c/a\u003e Refactor \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e unit tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/e497575fcb4d29dfb773824956539215db964059\"\u003e\u003ccode\u003ee497575\u003c/code\u003e\u003c/a\u003e Release v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0a8f391979f72f3237be8cdb79d6128dd5caeb93\"\u003e\u003ccode\u003e0a8f391\u003c/code\u003e\u003c/a\u003e Update related projects section.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3afef37bdbf8fa8f6dddbc303ecd91c9fd32ab01\"\u003e\u003ccode\u003e3afef37\u003c/code\u003e\u003c/a\u003e Pre-release v6.0.0b4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/34815dd03f5954272e0f06c1571e871ed1cfb5f4\"\u003e\u003ccode\u003e34815dd\u003c/code\u003e\u003c/a\u003e Update documentation for v6.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/8854b5075a63adee657a9f32485b026b6e33a29a\"\u003e\u003ccode\u003e8854b50\u003c/code\u003e\u003c/a\u003e Add intersphinx extension.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/0af4a07f371120521370a11e38473e21ec2ea6a1\"\u003e\u003ccode\u003e0af4a07\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.4.0 to 5.4.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.5.2...v6.1.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.4.26 to 2025.8.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3e7076557d66b598fcca462e422dc988f09a6802\"\u003e\u003ccode\u003e3e70765\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.5.0 to 5.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/9afd2ff407b8a0638988c952a6636b8dd623af7c\"\u003e\u003ccode\u003e9afd2ff\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.2.1 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7c816cbc9cf621b3ddc8cd7fa7eda3f36982620\"\u003e\u003ccode\u003ed7c816c\u003c/code\u003e\u003c/a\u003e remove code that's no longer required that 3.7 is our minimum (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/351\"\u003e#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/189961379209973abd0dd6304297f03e2359e1b9\"\u003e\u003ccode\u003e1899613\u003c/code\u003e\u003c/a\u003e Declare setuptools as the build backend in pyproject.toml (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/350\"\u003e#350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c8741423d67e1025c0bdad5225ded05cf962f207\"\u003e\u003ccode\u003ec874142\u003c/code\u003e\u003c/a\u003e update CI for ubuntu 20.04 deprecation (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/348\"\u003e#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.08.03\"\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.3\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.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.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/46f662da20edeced520c8819965a37eefbbc85de\"\u003e\u003ccode\u003e46f662d\u003c/code\u003e\u003c/a\u003e Release 3.4.3 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/638\"\u003e#638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1a059b26c155dd5fca408b0e0145c930633c4bf2\"\u003e\u003ccode\u003e1a059b2\u003c/code\u003e\u003c/a\u003e :wrench: skip building on freethreaded as we're not confident it is stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2275e3d3fea2bf6232661f1e9c21e7b81428e2a6\"\u003e\u003ccode\u003e2275e3d\u003c/code\u003e\u003c/a\u003e :pencil: final note in CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/c96acdfdb34b5b1deb6f70803167bae89b209832\"\u003e\u003ccode\u003ec96acdf\u003c/code\u003e\u003c/a\u003e :pencil: update release date on CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/43e5460518003df24ad1a3e7b5c0a34445395012\"\u003e\u003ccode\u003e43e5460\u003c/code\u003e\u003c/a\u003e :pencil: update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f277074e281a070cfa64fc91c46f8291043fc37c\"\u003e\u003ccode\u003ef277074\u003c/code\u003e\u003c/a\u003e :wrench: automatically lower confidence on small bytes str on non Unicode res...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/15ae2411072b5e026f2c9d6ec81b55f75af7dcf2\"\u003e\u003ccode\u003e15ae241\u003c/code\u003e\u003c/a\u003e :bug: automatically fallback on valid UTF-16 or UTF-32 even if the md says it...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/37397c1799a05454ab42fbbc94a7643cdb277924\"\u003e\u003ccode\u003e37397c1\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14 in nox test_mypyc session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/cb82537ecad195f48383b92e330351cea1fc6bc8\"\u003e\u003ccode\u003ecb82537\u003c/code\u003e\u003c/a\u003e :rewind: revert license due to compat python 3.7 issue setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/6a2efeb4c6e205964b61008b0c36ddf88c321543\"\u003e\u003ccode\u003e6a2efeb\u003c/code\u003e\u003c/a\u003e :art: fix linter errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 1.0.8 to 1.0.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.20\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.20\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.20\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T17:04\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.20.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.20\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[RELEASE] 1.0.20 by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5303\"\u003echroma-core/chroma#5303\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\"\u003ehttps://github.com/chroma-core/chroma/compare/1.0.19...1.0.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.0.18\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.0.18\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.0.18\u003c/code\u003e\nBuild Date: \u003ccode\u003e2025-08-18T08:09\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.0.18.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.0.18\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHORE]: Added short descriptions to CLI commands by \u003ca href=\"https://github.com/tazarov\"\u003e\u003ccode\u003e@​tazarov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5217\"\u003echroma-core/chroma#5217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use AVX in distance calculations by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5258\"\u003echroma-core/chroma#5258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Auto-set tenant, scoped database in python CloudClient by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5026\"\u003echroma-core/chroma#5026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[PERF]: Modify get_range to return an iterator by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5256\"\u003echroma-core/chroma#5256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Mark dirty on rollback of cursor to guarantee compaction picks it up. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5265\"\u003echroma-core/chroma#5265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add metric for component queue depth \u0026amp; change dispatcher queue depth metric buckets by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5261\"\u003echroma-core/chroma#5261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add garbage collection CLI for manual garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5250\"\u003echroma-core/chroma#5250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Clean up DEVELOP.md by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5270\"\u003echroma-core/chroma#5270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Further optimize query on getCollections when databases pkey is fully specified by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5268\"\u003echroma-core/chroma#5268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update Rust to allow build with AVX when flag is set by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5269\"\u003echroma-core/chroma#5269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Fix test_add flake by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5272\"\u003echroma-core/chroma#5272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Revert \u0026quot;[ENH]: Further optimize query on getCollections when databases pkey is fully specified (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5268\"\u003e#5268\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5273\"\u003echroma-core/chroma#5273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BLD] Add maturin to dev dependencies by \u003ca href=\"https://github.com/kylediaz\"\u003e\u003ccode\u003e@​kylediaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5271\"\u003echroma-core/chroma#5271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Optimize GetCollections and remove usage of raw gorm by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5274\"\u003echroma-core/chroma#5274\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: add config param to garbage collector to control how many collections are fetched from SysDb by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5275\"\u003echroma-core/chroma#5275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Reject version files without paths. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5267\"\u003echroma-core/chroma#5267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Enable getting a collection by CRN by \u003ca href=\"https://github.com/drewkim\"\u003e\u003ccode\u003e@​drewkim\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5244\"\u003echroma-core/chroma#5244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] CompactionError did not proxy should_trace_error by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5282\"\u003echroma-core/chroma#5282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Resolve deadlock in system crate? by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5283\"\u003echroma-core/chroma#5283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]  Complete the NAC metrics for the write half. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5278\"\u003echroma-core/chroma#5278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: fix missing node in constructed version graph for garbage collection by \u003ca href=\"https://github.com/codetheweb\"\u003e\u003ccode\u003e@​codetheweb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5284\"\u003echroma-core/chroma#5284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix test flake from 5283. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5287\"\u003echroma-core/chroma#5287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: Don't GC hnsw if it is empty by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5295\"\u003echroma-core/chroma#5295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Sync before flushing by \u003ca href=\"https://github.com/HammadB\"\u003e\u003ccode\u003e@​HammadB\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5296\"\u003echroma-core/chroma#5296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] update quota limits by \u003ca href=\"https://github.com/philipithomas\"\u003e\u003ccode\u003e@​philipithomas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5297\"\u003echroma-core/chroma#5297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG] Fix CLI copy offset by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5288\"\u003echroma-core/chroma#5288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add support for default space in create coll config by \u003ca href=\"https://github.com/jairad26\"\u003e\u003ccode\u003e@​jairad26\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/5293\"\u003echroma-core/chroma#5293\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/chroma-core/chroma/commit/b6b059dfd71525f9abad931ec30063bae177696f\"\u003e\u003ccode\u003eb6b059d\u003c/code\u003e\u003c/a\u003e [RELEASE] 1.0.20 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5303\"\u003e#5303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/1993cd4a515b40faac8e2c7c7d65526445959f0b\"\u003e\u003ccode\u003e1993cd4\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.8, Python 1.0.19, JS 3.0.14 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5302\"\u003e#5302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/19600af2796fffbe1781ef486ee324851877f88f\"\u003e\u003ccode\u003e19600af\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy arg number types (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5301\"\u003e#5301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/d3602cd776b2e3716ba3c9685a6571c1933489bc\"\u003e\u003ccode\u003ed3602cd\u003c/code\u003e\u003c/a\u003e [CHORE] Update JS binding deps in the client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5300\"\u003e#5300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2570b471edc5a47fc271eddfa37d8e4236ac0f21\"\u003e\u003ccode\u003e2570b47\u003c/code\u003e\u003c/a\u003e [RELEASE] CLI 1.1.7, Python 1.0.18, JS 3.0.13 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5299\"\u003e#5299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/51a7d1625b3b41083891f1c600e15131a321ae5e\"\u003e\u003ccode\u003e51a7d16\u003c/code\u003e\u003c/a\u003e [ENH] Add support for default space in create coll config (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5293\"\u003e#5293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/163133aacc9dab8a9e7d871db031d6e159ea1322\"\u003e\u003ccode\u003e163133a\u003c/code\u003e\u003c/a\u003e [BUG] Fix CLI copy offset (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5288\"\u003e#5288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/2f06586503be2603d49bd47c1315001460dac947\"\u003e\u003ccode\u003e2f06586\u003c/code\u003e\u003c/a\u003e [DOC] update quota limits (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5297\"\u003e#5297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/983728076d253409791709d5dbbed0657e30b6d9\"\u003e\u003ccode\u003e9837280\u003c/code\u003e\u003c/a\u003e [ENH] Sync before flushing (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5296\"\u003e#5296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/649e14c530fe46b0e5dec84ce2f5b25a28b79a2e\"\u003e\u003ccode\u003e649e14c\u003c/code\u003e\u003c/a\u003e [BUG]: Don't GC hnsw if it is empty (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/5295\"\u003e#5295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.0.8...1.0.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dateparser` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.2.2\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2 (2025-06-26)\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHandle the Russian preposition “с” (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache timezone offsets to improve import time (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\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/scrapinghub/dateparser/commit/f69e9b2e11c81ded87ec80956bcf42c297e9366c\"\u003e\u003ccode\u003ef69e9b2\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/84511a3ac65bf8b89067870f2244c13cc5fb864a\"\u003e\u003ccode\u003e84511a3\u003c/code\u003e\u003c/a\u003e Release notes for 1.2.2 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/180e697d95fc848d26fb0940351eebc2732b03ce\"\u003e\u003ccode\u003e180e697\u003c/code\u003e\u003c/a\u003e Fix weekday search (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/114f5c51935073d75ffb18679316166e7fc360e5\"\u003e\u003ccode\u003e114f5c5\u003c/code\u003e\u003c/a\u003e Fix compatibility with Python 3.14 beta 1 (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e9324ee9f3a123c51f129eed17d40570dcafd191\"\u003e\u003ccode\u003ee9324ee\u003c/code\u003e\u003c/a\u003e feat: add caching for timezone offsets, significantly speeds up import (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1250\"\u003e#1250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/f857dfcafbfab9b2b07c3bf236e5e55222797683\"\u003e\u003ccode\u003ef857dfc\u003c/code\u003e\u003c/a\u003e Fix: Handle Russian preposition \u0026quot;с\u0026quot; in date parsing and add tests (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1261\"\u003e#1261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `durationpy` from 0.9 to 0.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/354a6781a153daa6f2c2ec373ef50b8d8ac2ec20\"\u003e\u003ccode\u003e354a678\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/icholy/durationpy/commit/8c67aa06a0501a8fd9fe5742b761ff93c598270d\"\u003e\u003ccode\u003e8c67aa0\u003c/code\u003e\u003c/a\u003e add type hint (\u003ca href=\"https://redirect.github.com/icholy/durationpy/issues/18\"\u003e#18\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/icholy/durationpy/compare/0.9...0.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.115.12 to 0.116.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.116.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13884\"\u003e#13884\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📝 Add notification about impending changes in Translations to \u003ccode\u003edocs/en/docs/contributing.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13886\"\u003e#13886\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13871\"\u003e#13871\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.116.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for deploying to FastAPI Cloud with \u003ccode\u003efastapi deploy\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13870\"\u003e#13870\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\u003cp\u003eInstalling \u003ccode\u003efastapi[standard]\u003c/code\u003e now includes \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis will allow you to deploy to \u003ca href=\"https://fastapicloud.com\"\u003eFastAPI Cloud\u003c/a\u003e with the \u003ccode\u003efastapi deploy\u003c/code\u003e command.\u003c/p\u003e\n\u003cp\u003eIf you want to install \u003ccode\u003efastapi\u003c/code\u003e with the standard dependencies but without \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e, you can install instead \u003ccode\u003efastapi[standard-no-fastapi-cloud-cli]\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13801\"\u003e#13801\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Russian translation for \u003ccode\u003edocs/ru/docs/advanced/additional-status-codes.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13799\"\u003e#13799\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Add Ukrainian translation for \u003ccode\u003edocs/uk/docs/tutorial/body-updates.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13804\"\u003e#13804\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\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 pillow from 11.1.0 to 11.3.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13852\"\u003e#13852\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 FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13846\"\u003e#13846\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 FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13848\"\u003e#13848\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 mkdocs-material from 9.6.1 to 9.6.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13849\"\u003e#13849\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⬆ [pre-commit.ci] pre-commit autoupdate. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13843\"\u003e#13843\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13845\"\u003e#13845\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.115.14\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for unions when using \u003ccode\u003eForm\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13827\"\u003e#13827\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\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✏️ Fix grammar mistake in \u003ccode\u003edocs/en/docs/advanced/response-directly.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13800\"\u003e#13800\u003c/a\u003e by \u003ca href=\"https://github.com/NavesSapnis\"\u003e\u003ccode\u003e@​NavesSapnis\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Speakeasy URL to Speakeasy Sandbox. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13697\"\u003e#13697\u003c/a\u003e by \u003ca href=\"https://github.com/ndimares\"\u003e\u003ccode\u003e@​ndimares\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\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/fastapi/fastapi/commit/313723494be79d4b24ccaa60e4f6d1f96c150fed\"\u003e\u003ccode\u003e3137234\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/095dab00c7d7bb3fc5d02da159207d56ac5bc1ea\"\u003e\u003ccode\u003e095dab0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cad6880fd97d6f25d3f05025c88230285386e7f9\"\u003e\u003ccode\u003ecad6880\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade Starlette supported version range to \u003ccode\u003e\u0026gt;=0.40.0,\u0026lt;0.48.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13884\"\u003e#13884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a6e79e68a438c3e1f2ff628254d433832f73df53\"\u003e\u003ccode\u003ea6e79e6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c13b1ba4bce313d68f2ebd562b9b0c3267f5158\"\u003e\u003ccode\u003e2c13b1b\u003c/code\u003e\u003c/a\u003e 📝 Add notification about impending changes in Translations to `docs/en/docs/c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7179d48fd774bcbc5f5013bb8f4df61b8c36795f\"\u003e\u003ccode\u003e7179d48\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/07bcb18a5a2ddab8282f4a9d50f63f3c9f46ca8c\"\u003e\u003ccode\u003e07bcb18\u003c/code\u003e\u003c/a\u003e ⬆ [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/13871\"\u003e#13871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd8f358fd93416835b06486566b9d9ab991577b6\"\u003e\u003ccode\u003ebd8f358\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.116.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/18eb7a708096ab7a19f31a59918bc010aba0ddba\"\u003e\u003ccode\u003e18eb7a7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dd906a998ee2aa41cba98edf13364b34fdc9b1c1\"\u003e\u003ccode\u003edd906a9\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.115.12...0.116.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.18.0 to 3.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd 3.14t (free threading) to matrix by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncrease test coverage by \u003ca href=\"https://github.com/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/434\"\u003etox-dev/filelock#434\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/paultiq\"\u003e\u003ccode\u003e@​paultiq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/433\"\u003etox-dev/filelock#433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.0...3.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.19.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for 3.14 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/432\"\u003etox-dev/filelock#432\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.18.0...3.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/8d1009f08a6a64624fad91d1079062ef31b8c2b4\"\u003e\u003ccode\u003e8d1009f\u003c/code\u003e\u003c/a\u003e Update release.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/66a428e97a874b44b0310072f6c974226f55a472\"\u003e\u003ccode\u003e66a428e\u003c/code\u003e\u003c/a\u003e Increase test coverage (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0dfc86eebd2c76ae959a409bcbc3112cc1ec5890\"\u003e\u003ccode\u003e0dfc86e\u003c/code\u003e\u003c/a\u003e add 3.14 to matrix (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/0c54837e318ebe8a692b529722430cb38134bf7c\"\u003e\u003ccode\u003e0c54837\u003c/code\u003e\u003c/a\u003e Add support for 3.14 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/77d02f5ada3a1a92167b1beee35a7815cbde0fcf\"\u003e\u003ccode\u003e77d02f5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/bc972b33bf253bb9f08db32b19ffd4119a74706e\"\u003e\u003ccode\u003ebc972b3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/78d02cb5ff42b22a56ad1a36755361a6b4601765\"\u003e\u003ccode\u003e78d02cb\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/18cdb5d1c78a7a459463480303e9820f33cdf041\"\u003e\u003ccode\u003e18cdb5d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/b198a096d2bae58596479497d18a82bbeec515c8\"\u003e\u003ccode\u003eb198a09\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/6b097e76de603d9be6a24c5058b6fe53ef003afd\"\u003e\u003ccode\u003e6b097e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.18.0...3.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2025.3.2 to 2025.7.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/852f892f497940fc246d335a0ac7b3b3d93530fc\"\u003e\u003ccode\u003e852f892\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1891\"\u003e#1891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/97e5913518b4b11805394add1488ae93c62303cd\"\u003e\u003ccode\u003e97e5913\u003c/code\u003e\u003c/a\u003e Ruff legacy alias (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1887\"\u003e#1887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/57b7381ad92455ea0d4861e5e3531a77b823fc1f\"\u003e\u003ccode\u003e57b7381\u003c/code\u003e\u003c/a\u003e Remove any references to Python 3.8 (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/1888\"\u003e#1888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/b5f9391945ae9a0ed3bee7881352c317d601794d\"\u003e\u003ccode\u003eb5f9391\u003c/code\u003e\u003c/a\u003e Fix: HTTPFileSystem isdir downloads the whole file issue (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/iss...\n\n_Description has been truncated_","html_url":"https://github.com/Alvarz/google-gemini-rag/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alvarz%2Fgoogle-gemini-rag/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"}},{"old_version":"5.1.0","new_version":"5.2.0","update_type":"minor","path":null,"pr_created_at":"2025-08-25T07:09:00.000Z","version_change":"5.1.0 → 5.2.0","issue":{"uuid":"2770831311","node_id":"PR_kwDOG_O3ns6lJ4fP","number":2632,"state":"closed","title":"Bump mmh3 from 5.1.0 to 5.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":"2025-08-25T15:24:46.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-25T07:09:00.000Z","updated_at":"2025-08-25T15:24:46.000Z","time_to_close":29746,"merged_at":"2025-08-25T15:24:46.000Z","merged_by":"liquidsec","closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"}],"path":null,"ecosystem":"pip"},"body":"Bumps [mmh3](https://github.com/hajimes/mmh3) from 5.1.0 to 5.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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=mmh3\u0026package-manager=pip\u0026previous-version=5.1.0\u0026new-version=5.2.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/blacklanternsecurity/bbot/pull/2632","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklanternsecurity%2Fbbot/issues/2632","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2632/packages"}}]}